我对Babel 7,Webpack 4和Jest的配置有疑问。 在运行测试时,出现以下错误:
语法错误:无法在模块外部使用import语句
package.json
"@babel/core": "^7.7.5",
"@babel/highlight": "^7.8.3",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/preset-env": "^7.8.4",
"babel-core": "^7.0.0-bridge.0",
"babel-loader": "^7.1.5",
"@babel/plugin-transform-runtime": "^7.7.4",
"@babel/preset-react": "^7.7.4",
"@babel/runtime": "^7.8.4",
"babel-jest": "^24.9.0",
"jest-watch-typeahead": "^0.4.2",
"vue-jest": "^3.0.5",
"jest": "^24.9.0",
"jest-serializer-vue": "^2.0.2",
"jest-transform-stub": "^2.0.0",
webpack.config.js
entry: {
app: ["./src/index.js"]
},
output: {
path: path.resolve('../', 'static/js/'),
filename: "[name].js",
publicPath: '/static/js/',
chunkFilename: '[name].chunk.js'
},
.babelrc -我以为问题出在模块上:false,但是如果我不包括它,webpack不会对我的文件进行分块。
{
"presets": [
["@babel/preset-env", {"modules": false}, "jest" ]
],
"plugins": [
"@babel/plugin-syntax-dynamic-import"
],
"env": {
"test": {
"plugins": ["@babel/plugin-transform-runtime"],
}
}
}
当我删除模块:错误测试正在运行时,是否有机会不将模块:false包括在测试中?
答案 0 :(得分:2)
来自Babel Options documentation:
注意:env [envKey]选项将在根对象中指定的选项之上合并。
因此,您可以在测试期间通过在modules: "auto"
对象中重新声明插件来应用env.test
:
{
"presets": [
[
"@babel/preset-env",
{
"modules": false
},
"jest"
]
],
"plugins": [
"@babel/plugin-syntax-dynamic-import"
],
"env": {
"test": {
"presets": [
[
"@babel/preset-env",
{
"modules": "auto"
},
"jest"
]
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
}
}
答案 1 :(得分:0)
<div id="bilder">
</div>
语句仅在ES模块中允许。您的测试在使用commonjs模块的Node中运行。
尝试将case -2:
byte[] bytes = rs.getBytes(column_name);
obj.put(column_name, DatatypeConverter.printBase64Binary(bytes));
break;
添加到您的import
文件中
还请检查您正在运行的Node的版本,您可以在节点文档https://nodejs.org/api/esm.html#esm_ecmascript_modules
中找到更多信息。答案 2 :(得分:0)
自rtspt://
起,由于它本身就支持代码,因此不再需要为了在测试中支持esm而进行代码转换。您可以找到here,以及如何实现该目标的方法,