我无法 运行 通过 symfony/webpack-encore 使用 Jest 和 Vuejs 进行测试
I can't run test using Jest and Vuejs with symfony/webpack-encore
我正在尝试在 symfony/webpack-encore 上使用 jest 和 vuejs 框架实施单元测试,但在多次尝试后,我仍然收到此错误:
Jest encountered an unexpected token
This usually means that you are trying to import a file which Jest cannot parse,
e.g. it's not plain JavaScript.
By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
import {
^
SyntaxError: Unexpected token {
20 |
21 | import * as THREE from 'three';
22 | import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
| ^
这是我的 .babelrc 和 package.json 文件:
.babelrc :
{
"presets": [
"env",
["env", {
"modules": false
}],
"stage-2",
"vue"
],
"plugins": ["transform-runtime", "transform-es2015-modules-commonjs"],
"env": {
"test": {
"presets":[
["es2015", { "modules": false }],
"vue",
"stage-2"
],
"plugins": [
"transform-es2015-modules-commonjs",
"dynamic-import-node"
]
}
}
}
package.json :
{
"dependencies": {
"bazinga-translator": "^2.6.6",
"bootstrap": "^4.3.1",
"driver.js": "^0.9.6",
"highcharts": "^6.2.0",
"jquery": "^3.3.1",
"jquery-ui": "^1.12.1",
"jquery.fancytree": "^2.30.2"
},
"devDependencies": {
"@babel/core": "^7.7.0",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.2.0",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-env": "^7.7.1",
"@babel/preset-stage-2": "^7.0.0",
"@symfony/webpack-encore": "^0.27.0",
"@vue/cli-plugin-babel": "^3.0.5",
"@vue/cli-plugin-e2e-cypress": "^3.0.5",
"@vue/cli-plugin-eslint": "^3.0.5",
"@vue/cli-plugin-pwa": "^3.0.5",
"@vue/cli-plugin-unit-jest": "^3.0.5",
"@vue/cli-service": "^3.0.5",
"@vue/test-utils": "^1.0.0-beta.29",
"babel-jest": "^24.9.0",
"babel-loader": "^8.0.6",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"babel-preset-env": "^1.7.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-preset-vue": "^2.0.2",
"core-js": "^3.0.0",
"expose-loader": "^0.7.5",
"file-loader": "^4.2.0",
"gltf-loader-2": "^0.0.3",
"jest": "^24.9.0",
"jest-serializer-vue": "^2.0.2",
"jest-transform-stub": "^2.0.0",
"jest-vue-preprocessor": "^1.7.0",
"node-sass": "^4.12.0",
"regenerator-runtime": "^0.13.2",
"sass-loader": "^7.0.1",
"stats.js": "^0.17.0",
"three": "^0.110.0",
"three-orbitcontrols": "^2.110.1",
"transform-runtime": "^0.0.0",
"url-loader": "^1.1.1",
"vue": "^2.6.10",
"vue-jest": "^3.0.5",
"vue-loader": "^15.0.11",
"vue-svg-loader": "^0.12.0",
"vue-template-compiler": "^2.6.10",
"webpack-notifier": "^1.6.0"
},
"scripts": {
"dev-server": "encore dev-server",
"dev": "encore dev",
"watch": "encore dev --watch",
"build": "encore production --progress",
"test": "jest ./assets/src",
"test:unit": "vue-cli-service test:unit"
}
}
我确实尝试过使用 vue-cli,但在同一位置仍然出现相同的错误!
谢谢,
问题在于导入 three.js
库,
来源:https://github.com/facebook/jest/issues/3905#issuecomment-323525803
只要按照这个 doc 我就能 运行 我的测试。
我正在尝试在 symfony/webpack-encore 上使用 jest 和 vuejs 框架实施单元测试,但在多次尝试后,我仍然收到此错误:
Jest encountered an unexpected token
This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.
By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
import {
^SyntaxError: Unexpected token {
20 |
21 | import * as THREE from 'three';22 | import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
| ^
这是我的 .babelrc 和 package.json 文件:
.babelrc :
{
"presets": [
"env",
["env", {
"modules": false
}],
"stage-2",
"vue"
],
"plugins": ["transform-runtime", "transform-es2015-modules-commonjs"],
"env": {
"test": {
"presets":[
["es2015", { "modules": false }],
"vue",
"stage-2"
],
"plugins": [
"transform-es2015-modules-commonjs",
"dynamic-import-node"
]
}
}
}
package.json :
{
"dependencies": {
"bazinga-translator": "^2.6.6",
"bootstrap": "^4.3.1",
"driver.js": "^0.9.6",
"highcharts": "^6.2.0",
"jquery": "^3.3.1",
"jquery-ui": "^1.12.1",
"jquery.fancytree": "^2.30.2"
},
"devDependencies": {
"@babel/core": "^7.7.0",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.2.0",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-env": "^7.7.1",
"@babel/preset-stage-2": "^7.0.0",
"@symfony/webpack-encore": "^0.27.0",
"@vue/cli-plugin-babel": "^3.0.5",
"@vue/cli-plugin-e2e-cypress": "^3.0.5",
"@vue/cli-plugin-eslint": "^3.0.5",
"@vue/cli-plugin-pwa": "^3.0.5",
"@vue/cli-plugin-unit-jest": "^3.0.5",
"@vue/cli-service": "^3.0.5",
"@vue/test-utils": "^1.0.0-beta.29",
"babel-jest": "^24.9.0",
"babel-loader": "^8.0.6",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"babel-preset-env": "^1.7.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-preset-vue": "^2.0.2",
"core-js": "^3.0.0",
"expose-loader": "^0.7.5",
"file-loader": "^4.2.0",
"gltf-loader-2": "^0.0.3",
"jest": "^24.9.0",
"jest-serializer-vue": "^2.0.2",
"jest-transform-stub": "^2.0.0",
"jest-vue-preprocessor": "^1.7.0",
"node-sass": "^4.12.0",
"regenerator-runtime": "^0.13.2",
"sass-loader": "^7.0.1",
"stats.js": "^0.17.0",
"three": "^0.110.0",
"three-orbitcontrols": "^2.110.1",
"transform-runtime": "^0.0.0",
"url-loader": "^1.1.1",
"vue": "^2.6.10",
"vue-jest": "^3.0.5",
"vue-loader": "^15.0.11",
"vue-svg-loader": "^0.12.0",
"vue-template-compiler": "^2.6.10",
"webpack-notifier": "^1.6.0"
},
"scripts": {
"dev-server": "encore dev-server",
"dev": "encore dev",
"watch": "encore dev --watch",
"build": "encore production --progress",
"test": "jest ./assets/src",
"test:unit": "vue-cli-service test:unit"
}
}
我确实尝试过使用 vue-cli,但在同一位置仍然出现相同的错误!
谢谢,
问题在于导入 three.js
库,
来源:https://github.com/facebook/jest/issues/3905#issuecomment-323525803
只要按照这个 doc 我就能 运行 我的测试。