Mik*_*man 7 ulimit reactjs jestjs react-native
我正在尝试运行Jest测试,但是我收到以下错误:
读取文件时出错:
/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; ^错误:EMFILE:打开文件太多,打开'/ 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!测试失败.请参阅上文了解更多详情.
我感兴趣的是错误中列出的路径指向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并对RN.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"
}
}
Run Code Online (Sandbox Code Playgroud)
但我每次都得到同样的错误.
小智 13
我在一个小型 vuejs 项目中遇到了同样的问题。在我的情况下,修复只是一个小的配置属性:我把它放在我的jest.config.js
watchPathIgnorePatterns: ['node_modules'],
Run Code Online (Sandbox Code Playgroud)
对于任何与 vuejs 有相同问题的人。这是我的完整jest.config.js文件:
module.exports = {
preset: '@vue/cli-plugin-unit-jest',
transformIgnorePatterns: ['/node_modules/(?!(leaflet))'],
watchPathIgnorePatterns: ['node_modules'],
testMatch: [
'<rootDir>/src/**/*.spec.js'
],
};
Run Code Online (Sandbox Code Playgroud)
简短回答:将 'ulimit -n 4096' 添加到 ~.bash_profile 并打开一个新的终端窗口解决了我的问题。
答案与我没有正确设置 ulimit 有关。
sudo ulimit -n 10240
Run Code Online (Sandbox Code Playgroud)
在我的 Mac 上默默地不会改变 ulimit。我最初认为它没有做任何事情,因为 10240 不是 1024 的增量。但是当我尝试 2048、4096 等时它也没有做任何事情。
那么,什么是“解决方案”?
sudo ulimit -n 2048在终端窗口中输入并没有改变 ulimit(无论我尝试过什么数字)| 归档时间: |
|
| 查看次数: |
3136 次 |
| 最近记录: |