ts jest不传输使用动态导入导入的模块



我在nodejs代码中使用动态导入来导入一些模块。例如:

const initialize = (await import('./init')).default;
await initialize();

但当我运行jest时,它会抛出以下错误:

import sequelize from 'sequelize';
^^^^^^
SyntaxError: Cannot use import statement outside a module

我假设ts-jest没有转换/传输动态导入的代码。

我的jest.config.js文件具有:

/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
rootDir: './src/test',
globalSetup: '../setup/test_setup.ts',
};

请就如何解决此提供建议

运行globalSetup代码时发生错误。不确定ts-jest是否不能转换globalSetup代码。

为了解决这个问题,我将其添加到test_setup.ts文件(具有全局设置代码(的顶部:

require('ts-node').register({ transpileOnly: true });

(https://github.com/kulshekhar/ts-jest/issues/411#issuecomment-850944698(

您需要安装ts-node才能正常工作。

最新更新