当我使用Jest运行测试时,我遇到了一个错误,我尝试了2个小时来修复这个错误。但是,我无法修复它。我的模块使用的是gapi-script
包,错误发生在这个包中。但是,我不知道为什么会发生这个错误,以及如何修复它。
jest配置js
module.exports = {
"collectCoverage": true,
"rootDir": "./",
"testRegex": "__tests__/.+\\.test\\.js",
"transform": {
'^.+\\.js?$': "babel-jest"
},
"moduleFileExtensions": ["js"],
"moduleDirectories": [
"node_modules",
"lib"
]
}
巴别尔配置js
module.exports = {
presets: [
'@babel/preset-env',
]
};
方法.测试.js
import methods, { typeToActions } from '../lib/methods';
方法.js**
import { gapi } from "gapi-script";
...
错误消息
如果您有任何问题,请联系我们。如果您有任何问题,请联系我们。
SyntaxError: Cannot use import statement outside a module
我的设置有什么问题?
5条答案
按热度按时间bnl4lu3b1#
在撰写本文时,Jest正在为ES6模块提供支持。您可以在此处跟踪进度:
https://jestjs.io/docs/en/ecmascript-modules
现在,您可以通过运行以下命令来消除此错误:
而不是简单地:
请务必在使用此解决方案之前检查链接。
wd2eg0qa2#
我用保罗·科吉对另一个问题的回答解决了这个问题--
Does Jest support ES6 import/export?
第一步:
将测试环境添加到项目根目录下的.babelrc中:
第二步:
安装ECMAScript 6转换插件:
vu8f3i0k3#
Jest需要babel来处理模块。对于单独的测试,您不需要jest.config.js,只需将测试文件命名为xxx.spec.js或xxx.test.js,或者将文件放在名为test的文件夹中。
我使用这个babel.config.js:
添加“类型”:如果您的设置不太复杂,则不需要package.json中的“module”或使用其他答案中所述的mjs。
sycxhyv74#
我也遇到过同样的问题,通过添加以下命令行选项作为环境变量解决了这个问题。
mctunoxg5#
将Jest(package.json)升级到29版(目前最新的版本)为我解决了这个问题。