2015-11-08 118 views
5

我试图运行玩笑测试,但我发现了以下错误:阵营本地+玩笑EMFILE:打开的文件太多错误

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:

{ 
    "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" 
    } 
} 

但每次我得到了同样的错误

回答

3

简短的回答看:将'ulimit -n 4096'添加到〜.bash_profile并打开一个新的终端窗口解决了我的问题。

答案必须与我没有正确设置ulimit。

sudo ulimit -n 10240 

在我的Mac上默默无闻地改变了ulimit。我本来以为它没有做任何事情,因为10240不是1024的增量。但当我尝试2048,4096等时,它也没有做任何事情。

那么,什么是“解决方案”?

  • 的ulimit -n(无数字)会告诉你当前值是
  • 对我来说,在终端窗口中键入sudo ulimit -n 2048没有改变的ulimit(不管是什么号码,我试过)
  • 添加'ulimit -n 4096'到〜.bash_profile并打开一个新的终端解决了这个问题
1

我有一个类似的问题,前一段时间,但无法弄清楚,为什么玩笑并没有无视我node_modules文件夹。

我最终什么事做的是改变"testFileExtensions"["js"]["spec.js"],并以扩展.spec.js

不是正确的解决方案重命名所有的测试,但给我时间,直到当笑话的新版本解决这个问题

+0

这是一个很好的建议,但它并没有解决我的问题。但是它所做的是去除了一个很大的可能性,这导致我追求其他可能的原因(我最终发现了这个问题,请参阅上面的答案)。谢谢! –

0

我在powershell中运行windows。也使用Git Bash并且有类似的问题。我更新了我的package.json如下:

"devDependencies": { 
    "jest-cli": "^0.8.2", 
    }, 
    "jest": { 
    "testPathDirs": ["__tests__"], 
    "testPathIgnorePatterns": [ 
     "/node_modules/" 
    ] 
    }, 
    "scripts": { 
    "test": "jest" 
    }, 

注意"testPathDirs": ["__tests__"],是我把我所有的测试目录

现在我可以在没有问题运行npm test。最终,Jest似乎在浏览/node_modules/目录,该目录应该被排除。