Gatsbyのチュートリアルでアプリケーションが起動できないエラーが出たので対処法を書く


フロントで静的サイトを作る勉強だーと思ってGatsbyに手を出しました。
公式のチュートリアルを進めていたらこんなエラーが出まして。

ERROR 

UNHANDLED REJECTION ENOSPC: System limit for number of file watchers reached, watch '/home/user/workspace/gatsby/tutorial-part-two/static'



  Error: ENOSPC: System limit for number of file watchers reached, watch '/home/user/workspace/gatsby/tutorial-part-two/static'

  - watchers.js:169 FSWatcher.start
    internal/fs/watchers.js:169:26

  - nodefs-handler.js:118 createFsWatchInstance
    [tutorial-part-two]/[chokidar]/lib/nodefs-handler.js:118:15

  - nodefs-handler.js:165 setFsWatchListener
    [tutorial-part-two]/[chokidar]/lib/nodefs-handler.js:165:15

  - nodefs-handler.js:330 NodeFsHandler._watchWithNodeFs
    [tutorial-part-two]/[chokidar]/lib/nodefs-handler.js:330:14

  - nodefs-handler.js:551 NodeFsHandler._handleDir
    [tutorial-part-two]/[chokidar]/lib/nodefs-handler.js:551:19

  - runMicrotasks

  - task_queues.js:97 processTicksAndRejections
    internal/process/task_queues.js:97:5

  - nodefs-handler.js:600 async NodeFsHandler._addToNodeFs
    [tutorial-part-two]/[chokidar]/lib/nodefs-handler.js:600:16

  - index.js:434 
    [tutorial-part-two]/[chokidar]/index.js:434:21

  - async Promise.all

手順通りやってるのになぁと思いながら調べると対処方法の載っている場所がありました。
そこによると、システムのファイルウォッチャーが上限に達したみたいです。

まずはローカルでこの値を確認してみましょう。

$ cat /proc/sys/fs/inotify/max_user_watches
8192

8kですね。これを増やしましょう。issueのコメントによると524288(=512k)にしましょうということなので、これをそのまま使います。(メモリと相談してください。)

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
fs.inotify.max_user_watches=524288
fs.inotify.max_user_watches = 524288

そして値が設定された確認し、再度gatsbyコマンドで実行すれば解消されます。

$ cat /proc/sys/fs/inotify/max_user_watches
524288
$ gatsby develop
以下省略