2015-11-08 23 views
5

Ich versuche Jest Tests zu laufen, aber ich bin immer folgende Fehlermeldung:Reagieren india + Jest EMFILE: zu viele offene Dateien Fehler

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.

Was mir interessant ist, ist, dass der Weg in die aufgelisteten Fehler zeigt auf eine Datei im Verzeichnis node_modules, die aufgrund des Eintrags node_modules in testPathIgnorePatterns nicht erwartet wurde.

Ich betreibe Node 4.2.1, meine Installation von React-Native ist nur eine Woche alt, ich habe Jest heute installiert (also denke ich, dass ich mit allem auf dem Laufenden bin). Ich bin auf einem Mac.

Ich habe ausgeführt: sudo ulimit -n 10240, alle Terminal-Fenster geschlossen, und sogar einen Neustart versucht. (In meinem Bash_profile hatte ich vorher ulimit -n 1024 gegeben. Und ich habe noch größere Zahlen versucht.

Um das Problem zu stellen Sie sicher, nicht nur in meinem eigenen Projekt, habe ich ein neues Projekt mit react-native init TestTest und machte RN vorgeschlagenen Änderungen die 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" 
    } 
} 

aber ich bin jedes Mal die gleichen Fehler

Antwort

3

Kurze Antwort, wenn neue Versionen von Scherz fix dieses Problem bis zum Sehen : Das Hinzufügen von 'ulimit -n 4096' zu ~ .bash_profile und das Öffnen eines neuen Terminalfensters lösten mein Problem.

Die Antwort hatte damit zu tun, dass ich das ulimit nicht richtig gesetzt habe.

auf meinem Mac ändert sich nicht leise die ulimit. Ich hatte ursprünglich gedacht, es würde nichts tun, weil 10240 ist kein Inkrement von 1024. Aber es hat auch nichts getan, wenn ich versuchte 2048, 4096, etc.

Also, was ist "die" Lösung?

  • ulimit -n (ohne Nummer) wird Ihnen sagen, was der aktuelle Wert
  • für mich ist, ändern sudo ulimit -n 2048 in einem Terminalfenster eingeben nicht die ulimit (egal welche Nummer ich versucht)
  • das Hinzufügen von 'ulimit -n 4096' zu ~ .bash_profile und das Öffnen eines neuen Terminals löste das Problem
1

ich ein ähnliches Problem vor einiger Zeit hatte, konnte aber nicht herausfinden, warum Scherz war nicht meine node_modules Ordner zu ignorieren..

Was ich am Ende wird "testFileExtensions"["js"]-["spec.js"] und Umbenennung alle Tests mit der Erweiterung .spec.js

nicht die richtige Lösung zu ändern zu tun, sondern gibt mir Zeit

+0

Das war ein großartiger Vorschlag, aber es hat das Problem für mich nicht gelöst. Aber was es getan hat, war eine große Möglichkeit zu entfernen, die mich dazu brachte, andere mögliche Ursachen zu verfolgen (die ich schließlich fand, sehe meine Antwort oben). Vielen Dank! –

0

Ich benutze Windows in Powershell. Auch Git Bash verwendet und hatte ähnliche Probleme. Ich meine package.json wie folgt aktualisiert:.

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

Beachten Sie, dass "testPathDirs": ["__tests__"], das Verzeichnis ich in all meinen Tests stellen

Jetzt kann ich npm test ohne ein Problem ausgeführt werden.Letztendlich scheint Jest das Verzeichnis /node_modules/ zu navigieren, das ausgeschlossen werden sollte.