Javascript Jest es6模块:意外的模块导入
我正在测试一个需要导入es6模块的文件,如下所示: 看来我缺少了一些使其正常工作的配置 如果您可以通过另一个单元测试框架轻松实现这一点,我也很感兴趣Javascript Jest es6模块:意外的模块导入,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,我正在测试一个需要导入es6模块的文件,如下所示: 看来我缺少了一些使其正常工作的配置 如果您可以通过另一个单元测试框架轻松实现这一点,我也很感兴趣 提前感谢您的帮助。由于node不支持模块,您必须使用Babel编译文件。看看关于如何配置Jest和Babel的 安装所需的依赖项: 纱线添加——dev babel jest@babel/core@babel/preset env 或 npm安装——保存dev-babel-jest@babel/core@babel/preset-env 在主文件夹
提前感谢您的帮助。由于node不支持模块,您必须使用Babel编译文件。看看关于如何配置Jest和Babel的
纱线添加——dev babel jest@babel/core@babel/preset env
或
npm安装——保存dev-babel-jest@babel/core@babel/preset-env
babel.config.js
,然后粘贴到那里://babel.config.js
module.exports={
预设:[
[
“@babel/preset env”,
{
目标:{
节点:“当前”,
},
},
],
],
};
package.json
和jest.config.js
中的所有jest设置都设置为默认值AFAIK节点不支持ES2015导入语法。它使用了
require
,现在通过NODE_OPTIONS='--实验性虚拟机模块的jest
支持它。See Node自v8.5以来一直支持带有--实验模块
标志的模块。即使没有.mjs扩展?@BielSimon是的,没有mjs扩展。您需要包中的“type”:“module”
。json和Dan提到的标志。“type”:“module”
仅从节点v12开始工作,但您可以使用节点-r esm
您甚至不需要“type”:“module”
(除非您以正式的节点方式做事)。如果您只使用-r esm
。。。使用支持它的普通库(例如节点本身或Mocha),ES6模块“正常工作”。我得到“加载配置时出错-您似乎使用的是本机ECMAScript模块配置文件,只有异步运行Babel时才支持。”