web-dev-qa-db-ja.com

Jestでのテストがエラーで失敗しました:ファイルの変更の監視中にエラーが発生しました:EMFILE

React.jsアプリのテストを書いてみました。すべてが順調に進んでいましたが、ディレクトリをGitで追跡した後(Gitリポジトリを作成しました)。テストは以下のエラーで失敗します

2017-01-15 05:05 node[1278] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2017-01-15 05:05 node[1278] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: Error watching file for changes: EMFILE
    at exports._errnoException (util.js:1022:11)
    at FSEvent.FSWatcher._handle.onchange (fs.js:1406:11)

.gitディレクトリを削除すると、エラーなしで実行されているため、これは.gitディレクトリが原因であると確信しています。ファイルの監視中に例外が発生しているようです。私の開発環境はMacOS10.12.2およびNode 6.9.4です。この問題を解決するにはどうすればよいですか?

14
Colin Witkamp

ああ、私は何時間も苦労した後、私の質問に答えるつもりです。
最善の解決策は、最新バージョンの Watchman をインストールすることです。
古いバージョンのWatchmanにより、fseventsモジュールが例外をスローします。

watchmanをインストールした後、オプションでSudo chown -R $(whoami):staff ~/Library/LaunchAgentsを実行して権限を与えることができます。

19
Colin Witkamp

警備員はインストールされていますか?最近、同僚がラップトップに水をこぼしたので、プロジェクトなどを新しいラップトップに移行した後、同様の問題が発生しました。少し頭を悩ませた後、もちろん自作を持っていると仮定して、brew install watchmanを実行する必要があることに気づきました。

1
Anas

同じ問題が発生しましたが、アップグレードwatchmanでこれが修正されませんでした。 Jestのドキュメントを読むと、watchmanを使用して無効にするオプションがあることがわかります。したがって、watchmanは必要ないと思います。

私にとってこれを修正したのは、npm install --save-dev jest@latestを使用してJestを最新バージョンにアップグレードすることです。

1
nliu71

私にとって、それは許可の問題でした。homebrewでwatchmanをインストールするときは、brew postinstallwatchmanを試してみるべきだと言われています。これを行うと、権限エラーに気付くでしょう。 Error: Permission denied - /usr/local/var/run/watchman Sudo chown -R "$USER":admin /usr/local/var/run

その後、許可の問題を解決します

brew postinstall watchman 

動作します

0
Iyanu Tomiwa

create-react-appのREADMEのこのセクション この厄介な問題に対処するための可能な方法について説明します。

私は個人的にウォッチマンを再インストールする必要がありました-そしてテストは問題なく再び実行されていますか????。

0
Pavel Ye