jest-haste-map:@providesModule命名冲突:

时间:2018-04-27 17:04:40

标签: node.js npm continuous-integration jestjs yarnpkg

我们有一个Node应用程序,我们正在尝试将我们的测试用例迁移到Jest。在本地开发环境中,一切正常。我们能够运行测试。当在Jenkins上配置CI时,我们得到了很多@提供模块命名冲突警告,并且构建最终失败。我们不是反应或反应本机应用程序。

我们从分析中怀疑,Jest正试图在CI中创建自己的依赖图而不是纱线锁,因此有这些奇怪的提供模块碰撞警告。

我们怎样才能避免Jest这样做。但在本地,它没有显示任何此类警告。

1 个答案:

答案 0 :(得分:1)

当尝试将Jest测试集成到我的CI配置中时遇到了类似的问题。我发现的解决方案是使用npm install而不是yarn install。我认为这可能与纱线缓存有关。

请参见此主题,尤其是此答案:https://github.com/facebook/react-native/issues/13364#issuecomment-312500564

编辑

我发现解决此问题的另一种方法是在运行纱线安装之前删除纱线缓存。这是用于Heroku部署的示例GitLab CI配置条目。

image: node:8.11.3

cache:
  paths:
    - node_modules/

before_script:
  - apt-get update -qq && apt-get install

stages:
  - test

test:
  stage: test
  before_script:
    - rm -rf .yarn
    - yarn install
  script:
    - yarn test

或者,使用npm命令代替yarn似乎也可以解决此问题。在这种情况下,您将不需要删除纱线缓存。