几年来,我使用 Semaphore CI 建立了一个 Ruby on Rails 项目。Semaphore 项目设置为使用 Ruby 2.2.2 作为它的语言。随着时间的推移,该项目采用了带有 browserify 和 babelify 的 npm,并且我们使用了所有最新的 ES6 特性。npm install
我们在 Semaphore 构建中添加了一个设置步骤,效果很好。
现在我们开始使用 Jest 来测试我们的 javascript,这在本地运行良好。但是当我添加npm test
到我们的信号量测试命令时,npm test
信号量 CI 失败并出现以下错误:
FAIL app/assets/javascripts/tests/selectors/conversations.test.js
● Test suite failed to run
SyntaxError: Unexpected token {
at _load_jsdom (node_modules/jest/node_modules/jest-cli/node_modules/jest-environment-jsdom/build/index.js:17:41)
FAIL app/assets/javascripts/tests/reducers/conversations.test.js
● Test suite failed to run
SyntaxError: Unexpected token {
at _load_jsdom (node_modules/jest/node_modules/jest-cli/node_modules/jest-environment-jsdom/build/index.js:17:41)
Test Suites: 2 failed, 2 total
Tests: 0 total
Snapshots: 0 total
Time: 0.65s
Ran all test suites.
npm ERR! Test failed. See above for more details.
这是来自项目的一些相关信息package.json
:
"scripts": {
"test": "jest --debug --verbose"
},
"jest": {
"roots": [
"<rootDir>/app/assets/javascripts"
]
},
"dependencies": {
"babel-plugin-syntax-async-functions": "^6.3.13",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-regenerator": "^6.3.18",
"babel-polyfill": "^6.3.14",
"babel-preset-env": "^1.5.2",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2016": "^6.24.1",
"babel-preset-es2017": "^6.24.1",
"babel-preset-react": "^6.3.13",
"babel-preset-stage-0": "^6.3.13",
"babelify": "^7.2.0",
"browserify": "^14.0.0",
"browserify-incremental": "^3.1.0",
"es6-promise": "^3.0.2",
"fetch": "^0.3.6"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-jest": "^22.1.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"bootstrap": "^4.0.0-beta.3",
"browserify": "^14.4.0",
"browserify-incremental": "^3.1.1",
"jest": "^22.1.1"
}
这是.babelrc
位于项目中的文件:
{
"presets": ["env", "es2015", "es2016", "es2017", "stage-0", "react"]
}
在本地,我在node v7.10.0
. 我通过 SSH 进入我的 Semaphore CI 会话并发现它node v4.8.4
已安装在那里。我尝试node v4.8.4
在我的本地机器上安装并安装了该版本,我在本地得到了与在 CI 上相同的测试错误(上面发布)。所以这是一个节点版本问题。
我补充说:
"engines": {
"node": ">= 7.1.0"
}
到我的package.json
文件,但这并不影响安装在 Semaphore 上的节点版本。
因此,如果我已经Ruby 2.2.2
在 Semaphore Build Settings 中选择了我的语言和版本,我该如何更改我的节点版本?
在此先感谢您的帮助。