2015-11-08 21 views
5

Sto cercando di eseguire i test scherzo, ma sto ottenendo il seguente errore:Reagire Native + Jest EMFILE: troppi file aperti errore

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.

Ciò che è interessante per me è che il percorso elencato nel i punti di errore in un file nella directory node_modules, che mi aspettavo non sarebbero stati letti a causa della voce node_modules in testPathIgnorePatterns.

Sto eseguendo il nodo 4.2.1, la mia installazione di React-Native è vecchia di una settimana, ho installato Jest oggi (quindi penso di essere aggiornato con tutto). Sono su un Mac.

Ho eseguito: sudo ulimit -n 10240, chiuso tutte le finestre di Terminale e anche provato un riavvio. (Nel mio bash_profile precedenza avevo aggiunto ulimit -n 1024. E ho provato numeri ancora più grandi.

Per assicurarsi che il problema non è solo nel mio progetto, ho creato un nuovo progetto con react-native init TestTest e apportato delle modifiche suggerite di RN a il 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" 
    } 
} 

ma sto ottenendo lo stesso errore ogni volta

risposta

3

Risposta breve : l'aggiunta di 'ulimit -n 4096' a ~ .bash_profile e l'apertura di una nuova finestra di terminale ha risolto il problema.

La risposta ha avuto a che fare con me non impostare correttamente l'ulimit.

sudo ulimit -n 10240 

sul mio Mac silenziosamente non modifica l'ulimit. Inizialmente avevo pensato che non stava facendo nulla perché 10240 non è un incremento di 1024. Ma non ha fatto nulla quando ho provato 2048, 4096, ecc.

Quindi, qual è la "soluzione"?

  • ulimit -n (senza numero) vi dirà che cosa il valore corrente è
  • per me, digitando sudo ulimit -n 2048 in una finestra di terminale non ha modificato l'ulimit (non importa quale numero ho provato)
  • aggiungendo 'ulimit -n 4096' a ~ .bash_profile e aprendo un nuovo terminale risolto il problema
1

ho avuto un problema simile qualche tempo fa, ma non riuscivo a capire perché non scherzo stava ignorando la mia cartella node_modules..

Quello che ho finito per fare sta cambiando "testFileExtensions"["js"]-["spec.js"] e rinominare tutti i test con l'estensione .spec.js

non è la soluzione corretta, ma mi dà tempo fino a vedere se le nuove versioni di scherzo risolvere questo problema

+0

Questo è stato un ottimo suggerimento, ma non ha risolto il problema per me. Ma quello che ha fatto è stato rimuovere una grande possibilità, che mi ha portato a perseguire altre possibili cause (che alla fine ho trovato, vedere la mia risposta sopra). Grazie! –

0

Sono in esecuzione Windows in PowerShell. Utilizzato anche Git Bash e ha avuto problemi simili. Ho aggiornato il mio package.json come segue:.

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

Nota che "testPathDirs": ["__tests__"], è la directory metto tutte le mie prove in

Ora posso correre npm test senza un problema.In definitiva sembra che Jest stia navigando nella directory /node_modules/ che dovrebbe essere esclusa.