我有一个使用ES6的简单JavaScript项目,以及import
和export
。这是我的.babelrc
文件
{
"env": {
"es": {
"presets": [
[
"env",
{
"targets": {
"browsers": ["last 2 versions"],
"node": "current"
},
"modules": false
}
]
],
"ignore": ["**/*.test.js", "**/tests/*"]
},
"test": {
"presets": ["env"]
},
"cjs": {
"presets": [
[
"env",
{
"targets": {
"browsers": ["last 2 versions"],
"node": "current"
}
}
]
],
"ignore": ["**/*.test.js", "**/tests/*"]
}
}
}
我使用
npm test
运行测试,该命令从package.json
:"test": "jest --notify"
中运行此命令。在本地,一切正常,我的所有测试都通过了,但是当我推送到Travis时,出现了此错误:
SyntaxError: Unexpected token import
。它无法识别我的import
语句。这是我的
.travis.yml
:language: node_js
cache:
yarn: true
node_js:
- '8.4'
script:
- npm test
env:
- NODE_ENV: feature/travis
为什么我的
.babelrc
在Travis上不起作用?我想念什么? 最佳答案
这很可能发生,因为您已经在NODE_ENV: feature/travis
中定义了travis.yml
。这将导致Travis将您的测试作为NODE_ENV=feature/travis jest --notify
运行。
通常,这应该引起关注,但是jest
会自动将NODE_ENV设置为test
(如果尚未设置)。
您的问题可能类似于https://github.com/facebook/jest/issues/3370上的讨论。关于Jest是应该自动将NODE_ENV
设置为test
,还是如果不存在development
,它是否应该仅使用NODE_ENV
(或者如果它是全局设置的,则尊重已设置的NODE_ENV
),存在一些争议。
您还可以在jest-cli
https://github.com/facebook/jest/blob/master/packages/jest-cli/bin/jest.js#L12-L14中看到此逻辑
因此,我的建议是进行测试,而无需在NODE_ENV
中设置travis.yml
来查看它是否成功运行了所有测试。
关于javascript - 为什么我的笑话测试在本地运行,而不在Travis上运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48594117/