JEST Won&39;t转换模块-语法错误:不能在模块之外使用IMPORT语句 [英] Jest won't transform the module - SyntaxError: Cannot use import statement outside a module
本文介绍了JEST Won&39;t转换模块-语法错误:不能在模块之外使用IMPORT语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
无论我怎么尝试都无法摆脱这个SyntaxError: Cannot use import statement outside a module
错误,它变得如此令人沮丧。这里有没有人解决了这个问题?我已经阅读了一百万个Stackoverflow和GitHub问题帖子。没有明确的解决方案。
这是一个反应,打字,webpack的项目。我正在试着测试一个模块。但是Jest不会以某种方式将模块转换为纯javascript。
我收到的错误是
/Users/me/dev/Project/project/node_modules/variables/src/variables.js:12
import './main.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
17 |
18 | */
> 19 | import { GlobalVars } from 'variables'
| ^
20 |
21 | export const Vars = new GlobalVars()
22 |
我尝试解决此问题(但没有奏效):
在
babel.config
中使用env
设置:env.test.preset: ['@babel/plugin-transform-modules-commonjs']
将Jest Configuration中的
transform
设置修改为'^.+\.jsx?$': 'babel-jest', '^.+\.tsx?$': 'ts-jest'
,以及围绕此问题的所有其他可能性。在Jest配置中,
testPathIgnorePatterns
,transformIgnorePatterns
使用
.babel.config.js
而不是.babelrc.js
.等等。
我有此设置:
Package.json
"jest": {
"preset": "ts-jest",
"testEnvironment": "node"
}
.babelrc.js
module.exports = {
presets: [
['@babel/preset-env', { targets: { node: 'current' } }],
'@babel/preset-react',
'@babel/preset-typescript',
],
plugins: [
'@babel/plugin-transform-runtime',
'@babel/proposal-class-properties',
'@babel/transform-regenerator',
'@babel/plugin-transform-template-literals',
'react-hot-loader/babel',
],
}
变量.ts
import { GlobalVars } from 'variables'
export const Vars = new GlobalVars()
variables.spec.ts
import { Vars } from './variables.ts'
describe('Test The Package', () => {
it('Should accept new variables', () => {
Vars.newVariable = 'new variable'
expect(Vars.newVariable).toEqual('new variable')
})
})
关于如何解决此问题有什么想法吗?
推荐答案
虽然我已经单独尝试过,但还没有一起尝试(transform
和transformIgnorePatterns
)。所以这个JEST配置解决了我的问题:
"jest": {
"preset": "ts-jest",
"testEnvironment": "node",
"transform": {
"node_modules/variables/.+\.(j|t)sx?$": "ts-jest"
},
"transformIgnorePatterns": [
"node_modules/(?!variables/.*)"
]
},
我的错误是:
- 未将
transform
和transformIgnorePatterns
一起使用。 - 并将
babel-jest
定义为转换器,而不是ts-jest
(我想当jest的预置定义为ts-jest
时会有问题。因为如果我将其更改为babel-jest
,它将再次抛出相同的错误。):
--- "node_modules/variables/.+\.(j|t)sx?$": "babel-jest"
+++ "node_modules/variables/.+\.(j|t)sx?$": "ts-jest"
这篇关于JEST Won&39;t转换模块-语法错误:不能在模块之外使用IMPORT语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文