Jest:无法在模块外部使用import语句
我在使用Jest运行测试时出错,我试图修复此错误2小时。但是,我无法修复它。我的模块正在使用Jest:无法在模块外部使用import语句,import,module,jestjs,Import,Module,Jestjs,我在使用Jest运行测试时出错,我试图修复此错误2小时。但是,我无法修复它。我的模块正在使用gapi脚本包,此包中出现错误。然而,我不知道为什么会发生这种情况,以及如何修复它 jest.config.js module.exports = { "collectCoverage": true, "rootDir": "./", "testRegex": "__tests__/.+\\.test\\.js", "transform": { '^.+\\.js?$': "bab
gapi脚本
包,此包中出现错误。然而,我不知道为什么会发生这种情况,以及如何修复它
jest.config.js
module.exports = {
"collectCoverage": true,
"rootDir": "./",
"testRegex": "__tests__/.+\\.test\\.js",
"transform": {
'^.+\\.js?$': "babel-jest"
},
"moduleFileExtensions": ["js"],
"moduleDirectories": [
"node_modules",
"lib"
]
}
module.exports = {
presets: [
'@babel/preset-env',
]
};
import methods, { typeToActions } from '../lib/methods';
import { gapi } from "gapi-script";
...
babel.config.js
module.exports = {
"collectCoverage": true,
"rootDir": "./",
"testRegex": "__tests__/.+\\.test\\.js",
"transform": {
'^.+\\.js?$': "babel-jest"
},
"moduleFileExtensions": ["js"],
"moduleDirectories": [
"node_modules",
"lib"
]
}
module.exports = {
presets: [
'@babel/preset-env',
]
};
import methods, { typeToActions } from '../lib/methods';
import { gapi } from "gapi-script";
...
methods.test.js
module.exports = {
"collectCoverage": true,
"rootDir": "./",
"testRegex": "__tests__/.+\\.test\\.js",
"transform": {
'^.+\\.js?$': "babel-jest"
},
"moduleFileExtensions": ["js"],
"moduleDirectories": [
"node_modules",
"lib"
]
}
module.exports = {
presets: [
'@babel/preset-env',
]
};
import methods, { typeToActions } from '../lib/methods';
import { gapi } from "gapi-script";
...
methods.js
module.exports = {
"collectCoverage": true,
"rootDir": "./",
"testRegex": "__tests__/.+\\.test\\.js",
"transform": {
'^.+\\.js?$': "babel-jest"
},
"moduleFileExtensions": ["js"],
"moduleDirectories": [
"node_modules",
"lib"
]
}
module.exports = {
presets: [
'@babel/preset-env',
]
};
import methods, { typeToActions } from '../lib/methods';
import { gapi } from "gapi-script";
...
错误消息
C:\haram\github\react youtube数据api\node\u modules\gapi script\index.js:1
({“Object.”:函数(模块、导出、require、u dirname、u文件名、全局、jest){import
{gapi,gapiComplete}来自“/gapiScript”
SyntaxError: Cannot use import statement outside a module
我的设置有什么问题?Jest需要babel来处理模块。 对于单独的测试,您不需要jest.config.js,只需将测试文件命名为xxx.spec.js或xxx.test.js,或者将文件放在名为test的文件夹中即可 我使用这个babel.config.js:
module.exports = function (api) {
api.cache(true)
const presets = [
"@babel/preset-env"
]
return {
presets
}
}
在package.json中添加“type”:“module”或使用其他答案中所述的mjs在您的设置不太复杂时是不必要的。在撰写本文时,Jest正在为ES6模块提供支持。您可以在此处跟踪进度: 目前,您可以通过运行以下命令来消除此错误:
node --experimental-vm-modules node_modules/.bin/jest
而不是简单地:
jest
在使用此解决方案之前,请务必检查链接。也许您可以阅读此处的注释。您是否也尝试在测试中导入该包?或者模拟gapi函数?我相信您必须模拟它。这太庞大了!我花了太长时间寻找此解决方案。所有测试都正常工作,然后我编写了一系列小时的代码,然后一切都失败了。找到了大量关于如何更新配置以使事情通过的文档-尝试了一段时间,失败了一段时间,然后找到了这个。