为什么我的开玩笑测试是在本地运行,而不是在Travis上运行?

时间:2018-02-03 05:04:35

标签: javascript import travis-ci

我有一个使用ES6的简单javascript项目,加上importexport。这是我的.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"SyntaxError: Unexpected token import

在本地,一切运行正常,我的所有测试都通过,但当我推送到Travis时,我收到此错误:import。它无法识别我的.travis.yml语句。

这是我的language: node_js cache: yarn: true node_js: - '8.4' script: - npm test env: - NODE_ENV: feature/travis

.babelrc

为什么我的{{1}}没有在特拉维斯工作?我错过了什么?

1 个答案:

答案 0 :(得分:2)

可能会发生这种情况,因为您已在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,以确定它是否成功运行了所有测试。