2015-11-08 11 views
5

Tôi cố gắng để chạy thử nghiệm đùa, nhưng tôi nhận được lỗi sau:Phản ứng Native + jest EMFILE: quá nhiều tập tin mở lỗi

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.

gì là thú vị với tôi là con đường được liệt kê trong lỗi điểm đến một tập tin trong thư mục node_modules, mà tôi mong đợi sẽ không được đọc vì mục node_modules trong testPathIgnorePatterns.

Tôi đang chạy Node 4.2.1, bản cài đặt React-Native của tôi chỉ mới một tuần, tôi đã cài đặt Jest hôm nay (vì vậy tôi nghĩ tôi đã cập nhật mọi thứ). Tôi đang ở trên máy Mac.

Tôi đã chạy: sudo ulimit -n 10240, đóng tất cả cửa sổ Thiết bị đầu cuối và thậm chí đã thử khởi động lại. (Trong my .bash_profile của tôi trước đây tôi đã thêm ulimit -n 1024. Và tôi đã thử số lớn hơn.

Để đảm bảo vấn đề không chỉ trong dự án của riêng tôi, tôi đã tạo một dự án mới với react-native init TestTest và thực hiện các thay đổi được đề xuất của RN các 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" 
    } 
} 

nhưng tôi nhận được lỗi tương tự mỗi khi

Trả lời

3

Câu trả lời ngắn : thêm 'ulimit -n 4096' vào ~ .bash_profile và mở một cửa sổ dòng lệnh mới đã giải quyết được sự cố của tôi.

Câu trả lời phải làm với tôi không thiết lập đúng ulimit.

sudo ulimit -n 10240 

trên máy Mac của tôi âm thầm không thay đổi ulimit. Ban đầu tôi đã nghĩ rằng nó không làm gì vì 10240 không phải là một gia số 1024. Nhưng nó cũng không làm bất cứ điều gì khi tôi thử 2048, 4096, v.v.

Vì vậy, "giải pháp" là gì?

  • ulimit -n (không có số) sẽ cho bạn biết giá trị hiện tại là
  • đối với tôi, gõ sudo ulimit -n 2048 trong một cửa sổ terminal KHÔNG thay đổi ulimit (không có vấn đề gì tôi đã cố gắng số)
  • thêm 'ulimit -n 4096' vào ~ .bash_profile và mở một thiết bị đầu cuối mới đã giải quyết được sự cố
1

tôi đã có một vấn đề tương tự một số thời gian trước đây nhưng không thể tìm ra lý do tại sao jest đã không bỏ qua thư mục node_modules tôi..

Những gì tôi đã kết thúc làm đang thay đổi "testFileExtensions"["js"]-["spec.js"] và đổi tên tất cả các bài kiểm tra với phần mở rộng .spec.js

Không phải là giải pháp thích hợp nhưng mang lại cho tôi thời gian cho đến khi nhìn thấy nếu phiên bản mới của jest khắc phục vấn đề này

+0

Đây là một gợi ý tuyệt vời, nhưng nó không giải quyết được vấn đề cho tôi. Nhưng những gì nó đã làm là loại bỏ một khả năng lớn, dẫn tôi theo đuổi những nguyên nhân có thể khác (mà cuối cùng tôi tìm thấy, xem câu trả lời của tôi ở trên). Cảm ơn! –

0

Tôi đang chạy các cửa sổ trong PowerShell. Cũng được sử dụng Git Bash và có vấn đề tương tự. Tôi cập nhật package.json của tôi như sau:.

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

Lưu ý rằng "testPathDirs": ["__tests__"], là thư mục Tôi đặt tất cả các bài kiểm tra của tôi trong

Bây giờ tôi có thể chạy npm test mà không có một vấn đề.Cuối cùng có vẻ như Jest đang điều hướng thư mục /node_modules/ cần được loại trừ.

Các vấn đề liên quan