Rolf B: top-level await bei dynamischem Import von Modulen

Beitrag lesen

Ich hab was gelernt bei StackOverflow.

Mein Testbeispiel war nicht so reduziert, wie ich es hier dargestellt habe.

Ich habe:

main.js:

export { hilfsobjekt };

const hilfsobjekt = { ... };

let modul = await import("./modul1.js");
modul.testcall();

modul1.js:

import { XyClass } from "./XyClass.js";

export function testcall() { ... };

XyClass.js:

import { hilfsobjekt } from "./main.js";

export class XyClass { ... };

Tjaaa, und dieser import des Hilfsobjekts, das eigentlich nur dazu da ist, ein paar Testhelfer bereitzustellen, schießt den await ab. Nehme ich den raus und injiziere das Hilfsobjekt über Parameter, funktioniert es.

Aber: Wenn ich diesen zirkulären Import drin lasse, und main.js so abändere:

(() => {
   let modul = await import("./modul1.js");
   modul.testcall();
)();

dann funktioniert's auch.

Warum? Weiß der Geier.

Rolf

Rolf

--
sumpsi - posui - obstruxi