在Vuejs项目中, 节点版本:v10.6.0
Package.json版本:
"devDependencies": {
"@vue/cli-plugin-babel": "^3.0.0-rc.4",
"@vue/cli-plugin-unit-jest": "^3.0.0-rc.4",
"@vue/cli-service": "^3.0.0-rc.4",
"@vue/test-utils": "^1.0.0-beta.20",
"babel-core": "7.0.0-bridge.0",
"babel-jest": "^23.0.1",
"vue-template-compiler": "^2.5.16"
},
当我使用内置任务运行它时,
"test:unit": "vue-cli-service test:unit"
但是我想调试,所以我用node命令手动运行:
node node_modules/.bin/jest
它给出以下错误:
FAIL tests/unit/HelloWorld1.spec.js
● Test suite failed to run
.../tests/unit/HelloWorld1.spec.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import "core-js/modules/es6.array.iterator";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected string
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
我添加了.babelrc并包含以下内容
{"env": {
"development": {
"plugins": ["transform-es2015-modules-commonjs"]
},
"test": {
"plugins": ["transform-es2015-modules-commonjs"]
}
}}
情况有所改善,它可以通过测试文件而无需“导入”,一旦导入,它将显示另一个错误:
....tests/unit/HelloWorld1.spec.js:3
import _interopRequireWildcard from "..../node_modules/@babel/runtime/helpers/builtin/es6/interopRequireWildcard";
^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
答案 0 :(得分:12)
奋斗了几天。最终,我得到了在VueJs应用程序的调试模式下运行笑话的解决方案。
在调试vue-cli-service并依次@vue/cli-plugin-unit-jest
之后,我发现了下面的代码,然后才产生了有趣的过程:
process.env.VUE_CLI_BABEL_TARGET_NODE = true
process.env.VUE_CLI_BABEL_TRANSPILE_MODULES = true
因此解决方案非常简单。
只需在运行jest命令之前添加这两个环境变量即可。以下命令将在调试模式下启动:
export VUE_CLI_BABEL_TARGET_NODE=true
export VUE_CLI_BABEL_TRANSPILE_MODULES=true
./node_modules/jest/bin/jest.js --clearCache
node --inspect-brk ./node_modules/jest/bin/jest.js -i
请确保不要添加“ .babel.rc”,这会增加VueJS babel的质量。
通常,您需要使用--clearCache
选项来开玩笑。否则,过时生成的文件也将混乱。
笑话选项-i
也很重要。否则,测试将在单独的进程中运行,该进程不会处于调试模式。
答案 1 :(得分:1)
有同样的问题。
l2
尝试了以上答案。This article解决了我的问题。
解决方案:
l1
答案 2 :(得分:0)
另一种解决方案是确保节点环境正确解析。
就我而言,它将解决为“发展”。将我的package.json
更新为以下解决了该问题:
"test": "NODE_ENV=test jest"
这将确保您的babel配置使用测试配置。
答案 3 :(得分:0)
您的测试套件以前是否正常工作,现在是否会引发此错误?这就是我所发生的事情,在深入研究高端产品之前,很有可能会缓存导致此问题的东西。
我使用npm test -- -u
如果失败,则应删除node_modules
文件夹并重新进行npm install
,然后尝试npm cache clean --force
。
如果要在没有缓存的情况下运行测试,另一个有用的命令是npm test -- --no-cache -u
。