reactjs - React Native + Jest EMFILE : too many open files error

标签 reactjs react-native jestjs ulimit

我正在尝试运行 Jest 测试,但收到以下错误:

Error reading file: /Users/mike/dev/react/TestTest/node_modules/react-native/node_modules/yeoman-environment/node_modules/globby/node_modules/glob/node_modules/path-is-absolute/package.json /Users/mike/dev/react/TestTest/node_modules/jest-cli/node_modules/node-haste/lib/loader/ResourceLoader.js:88 throw err; ^

Error: EMFILE: too many open files, open '/Users/mike/dev/react/TestTest/node_modules/react-native/node_modules/yeoman-environment/node_modules/globby/node_modules/glob/node_modules/path-is-absolute/package.json' at Error (native) npm ERR! Test failed. See above for more details.

令我感兴趣的是,错误中列出的路径指向node_modules目录中的一个文件,由于testPathIgnorePatterns中的node_modules条目,我预计该文件不会被读取。

我正在运行 Node 4.2.1,我安装的 React-Native 才一周,我今天安装了 Jest(所以我认为我已经更新了所有内容)。我使用的是 Mac。

我已经运行:sudo ulimit -n 10240,关闭了所有终端窗口,甚至尝试重新启动。 (在我的 .bash_profile 中,我之前添加了 ulimit -n 1024。而且我尝试过更大的数字。

为了确保问题不仅仅出现在我自己的项目中,我使用 react-native init TestTest 创建了一个新项目,并对 package.json 进行了 RN 建议的更改:

{
  "name": "TestTest",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node_modules/react-native/packager/packager.sh",
    "test": "jest"
  },
  "dependencies": {
    "react-native": "^0.14.1"
  },
  "jest": {
    "scriptPreprocessor": "node_modules/react-native/jestSupport/scriptPreprocess.js",
    "setupEnvScriptFile": "node_modules/react-native/jestSupport/env.js",
    "testPathIgnorePatterns": [
      "/node_modules/",
      "packager/react-packager/src/Activity/"
    ],
    "testFileExtensions": [
      "js"
    ],
    "unmockedModulePathPatterns": [
      "promise",
      "source-map"
    ]
  },
  "devDependencies": {
    "jest-cli": "^0.7.1"
  }
}

但是我每次都会遇到同样的错误。

最佳答案

我在一个小型 vuejs 项目中遇到了同样的问题。就我而言,修复只是一个小的配置属性:我将其放入我的 jest.config.js

  watchPathIgnorePatterns: ['node_modules'],

对于任何在 vuejs 上遇到同样问题的人。这是我的完整 jest.config.js 文件:

module.exports = {
  preset: '@vue/cli-plugin-unit-jest',
  transformIgnorePatterns: ['/node_modules/(?!(leaflet))'],
  watchPathIgnorePatterns: ['node_modules'],
  testMatch: [
    '<rootDir>/src/**/*.spec.js'
  ],
};

关于reactjs - React Native + Jest EMFILE : too many open files error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33589810/

相关文章:

node.js - 使用 nodejs 和 reactjs 强制 ssl

javascript - View 不会更新,但 URL 在 React Router V6 中会更新

javascript - 需要访问 React Native 中底部选项卡导航器中的状态以实现购物车徽章

javascript - ReactJS 无法引用创建的状态

reactjs - 单击 <Link> 不会在带有 require.ensure 的 React-router 中失去焦点

javascript - require() 是如何工作的?

reactjs - React/React Native + enzyme : How to test if a component renders it's children?

javascript - 如何通过命令行告诉 Jest 不要运行某个测试文件,而是运行所有其他文件?

node.js - 覆盖模型错误: Cannot overwrite `actors` model once compiled

react-native - Jest/ESLint 失败未定义