2015-11-08 5 views
5

Я пытаюсь запустить шутя тесты, но я получаю следующее сообщение об ошибке:Реагировать Native + шутя 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, который, как я ожидал, не будет считаться из-за записи node_modules в testPathIgnorePatterns.

Я запускаю узел 4.2.1, моя установка React-Native - это всего лишь неделя, я установил Jest сегодня (так что я думаю, что я в курсе всего). Я нахожусь на Mac.

Я запустил: sudo ulimit -n 10240, закрыл все окна терминала и даже попробовал перезагрузку. (В моем .bash_profile я уже добавил ulimit -n 1024. И я попробовал еще большие цифры.

Для того, чтобы убедиться, что проблема не только в своем собственном проекте, я создал новый проект с react-native init TestTest и сделал предложенные изменения RN к 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. Также использовал 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/, который следует исключить.