我有一个使用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"中运行此命令。

在本地,一切正常,我的所有测试都通过了,但是当我推送到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/

10-14 13:22
查看更多