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です。この問題を解決するにはどうすればよいですか?
ああ、私は何時間も苦労した後、私の質問に答えるつもりです。
最善の解決策は、最新バージョンの Watchman をインストールすることです。
古いバージョンのWatchmanにより、fsevents
モジュールが例外をスローします。
watchman
をインストールした後、オプションでSudo chown -R $(whoami):staff ~/Library/LaunchAgents
を実行して権限を与えることができます。
警備員はインストールされていますか?最近、同僚がラップトップに水をこぼしたので、プロジェクトなどを新しいラップトップに移行した後、同様の問題が発生しました。少し頭を悩ませた後、もちろん自作を持っていると仮定して、brew install watchman
を実行する必要があることに気づきました。
同じ問題が発生しましたが、アップグレードwatchman
でこれが修正されませんでした。 Jestのドキュメントを読むと、watchman
を使用して無効にするオプションがあることがわかります。したがって、watchman
は必要ないと思います。
私にとってこれを修正したのは、npm install --save-dev jest@latest
を使用してJestを最新バージョンにアップグレードすることです。
私にとって、それは許可の問題でした。homebrewでwatchmanをインストールするときは、brew postinstallwatchmanを試してみるべきだと言われています。これを行うと、権限エラーに気付くでしょう。 Error: Permission denied - /usr/local/var/run/watchman Sudo chown -R "$USER":admin /usr/local/var/run
その後、許可の問題を解決します
brew postinstall watchman
動作します
create-react-appのREADMEのこのセクション この厄介な問題に対処するための可能な方法について説明します。
私は個人的にウォッチマンを再インストールする必要がありました-そしてテストは問題なく再び実行されていますか????。