【问题标题】:Javascript (Jest) tests on Semaphore CI ruby projectSemaphore CI ruby​​ 项目上的 Javascript (Jest) 测试
【发布时间】:2018-06-24 09:49:13
【问题描述】:

多年来,我使用 Semaphore CI 建立了一个 Ruby on Rails 项目。 Semaphore 项目设置为使用 Ruby 2.2.2 作为其语言。随着时间的推移,该项目采用了带有 browserify 和 babelify 的 npm,并且我们使用了所有最新的 ES6 功能。我们在 Semaphore 构建中添加了 npm install 作为设置步骤,并且运行良好。

现在我们开始使用 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 上的节点版本。

如果我已经在 Semaphore 构建设置中选择了 Ruby 2.2.2 作为我的语言和版本,我该如何更改我的节点版本?

提前感谢您的帮助。

【问题讨论】:

    标签: node.js npm jestjs babel-jest semaphore-ci


    【解决方案1】:

    这里是来自 Semaphore 的 Ervin,

    要更改环境中的当前 Node.js 版本,同时选择 Ruby 2.2,请将 nvm use 7.1 添加到您的设置步骤中。这将切换到所需的 Node.js 版本,并且一切都应该按预期工作。文档中还有an example of this

    如果遇到任何问题,请与支持人员联系。

    【讨论】:

      【解决方案2】:

      看起来 SemaphoreCI 使用的 NPM 版本与您不同。但是你可以在构建设置中这样设置:

      nvm install v8.9.4
      npm install
      npm test
      

      你可以在 SSH 中测试一下

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-14
        • 1970-01-01
        • 2015-01-04
        • 2020-09-20
        • 1970-01-01
        • 2019-04-30
        • 1970-01-01
        相关资源
        最近更新 更多