2015-11-08 120 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/目錄,該目錄應該被排除。