typescript - Testa CommonJS med dynamiska importer av ESM med ts-jest
Givet ett bibliotek som använder CommonJS-modulsystemet, men importerar ESM (endast) modulermed en dynamisk import (för att förhindra att TS ersätter import med require):
export async function loadEsmModule<T>(modulePath: string|URL): Promise<T> {
const namespaceObject =
(await new Function('modulePath', `return import(modulePath);`)(modulePath));
// If it is not ESM then the values needed will be stored in the `default` property.
if (namespaceObject.default) {
return namespaceObject.default;
} else {
return namespaceObject;
}
}
Vad är en fungerande konfiguration för att köra enhetstester med ts-jest med hjälp av CommonJS?
Vad jag försökte i olika kombinationer (och misslyckades med):
- Nodejs-alternativ
--experimental-vm-modules:
Fel: "En jest-arbetareprocess (pid=2701) avslutades av en annan process: signal=SIGSEGV, exitCode=null. Loggar från operativsystemet kan innehålla mer information om varför detta inträffade." - Jest-alternativ
--runInBand
Fel: "Testmiljön har rivits ned" - Ställa in jest-alternativ
maxWorkersochmaxConcurrencytill stora värden. - Alternativa jest-inställningar
Andra referenser:
- https://github.com/jestjs/jest/issues/11438