React Nativeエラー:ENOSPC:ファイルウォッチャーの数のシステム制限に達しました


158

新しい空白のreactネイティブアプリをセットアップしました。

いくつかのノードモジュールをインストールした後、このエラーが発生しました。

Running application on PGN518.
internal/fs/watchers.js:173
   throw error;
   ^

Error: ENOSPC: System limit for number of file watchers reached, watch '/home/badis/Desktop/react-native/albums/node_modules/.staging'
   at FSWatcher.start (internal/fs/watchers.js:165:26)
   at Object.watch (fs.js:1253:11)
   at NodeWatcher.watchdir (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:175:20)
   at NodeWatcher.<anonymous> (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:310:16)
   at /home/badis/Desktop/react-native/albums/node modules/graceful-fs/polyfills.js:285:20
   at FSReqWrap.oncomplete (fs.js:154:5)

ウォッチマンがすべてのファイル変更を監視するのに十分なスペースがないことに関連していることを私は知っています。

ここで取るべき最善の行動方針を知りたいですか?

node_modulesフォルダを追加して無視する必要があります.watchmanconfigか?


23
コード、エラー、出力の画像は絶対に投稿しないでください。stackoverflow.com/help/how-to-ask
Rob

1
いくつかのコードをmetro.config.jsバックリストに追加することを検討しましたか?:これは、スキャンボリューム減少するはずであるstackoverflow.com/questions/41813211/...
deepelement

回答:


265

Linuxは、inotifyパッケージを使用して、ファイルシステムイベント、個々のファイル、またはディレクトリを監視します。

React / Angularは保存時にファイルをホットリロードして再コンパイルするため、すべてのプロジェクトのファイルを追跡する必要があります。inotifyの監視制限を増やすと、警告メッセージが非表示になります。

編集してみてください

# insert the new value into the system config
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

# check that the new value was applied
cat /proc/sys/fs/inotify/max_user_watches

# config variable name (not runnable)
fs.inotify.max_user_watches=524288

41
これは、問題が何であるか、解決策が何であるか、または解決策が問題をどのように修正するかを説明していません。
ネイティブコーダー

2
うわー、私は上記と同様の問題に遭遇しましたが、このソリューションは100%それを解決しました。ありがとう
akolliy

3
より多くを許可する代わりに、どのようにウォッチャーを奪うのですか?
ジョナサン

2
動作しますが、この権利を読むと、制限が高くなります。とにかく、代わりに開いているウォッチャーを閉じることができますか?
ZOZO

1
@NativeCoderは新しい版でその問題を解決しますか?
zardilior

182

このエラーの意味は、システムによって監視されるファイルの数が制限に達したということです!!

結果:実行されたコマンドは失敗しました!または、警告をスローします(react-native start VSCodeの実行など)

解決:

システム監視ファイルの数を変更する

Ubuntu

sudo gedit /etc/sysctl.conf

下部に線を追加します

fs.inotify.max_user_watches=524288

次に、保存して終了します。

sudo sysctl -p

それをチェックする

その後、それは解決されます!


ねえ、これは私の場合は解決しました。私の投稿でも共有されています。ありがとう
RashidKhan20年

ありがとうございました。これで私の問題も解決しました。
ネルソンカタレ

ありがとうございました!これは私を助けました。
WISERDIVISOR

65

あなたはそれを修正することができます、それはinotifyウォッチャーの量増やすことです。

技術的な詳細に興味がなく、Listenを機能させたいだけの場合:

  • Debian、RedHat、または他の同様のLinuxディストリビューションを実行している場合は、ターミナルで以下を実行します。

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

  • ArchLinuxを実行している場合は、代わりに次のコマンドを実行してください

    $ echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

次に、それをターミナルに貼り付け、Enterキーを押して実行します。


技術的な詳細

リッスンは、Linuxではデフォルトでinotifyを使用して、ディレクトリの変更を監視します。監視できるファイルの数にシステム制限が発生することは珍しくありません。たとえば、Ubuntu Lucid(64ビット)のinotify制限は8192に設定されています。

次のコマンドを実行すると、現在のinotifyファイルの監視制限を取得できます。

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

この制限がディレクトリ内のすべてのファイルを監視するのに十分でない場合、Listenが正しく機能するように制限を増やす必要があります。

次の方法で、新しい制限を一時的に設定できます。

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

制限を永続的にしたい場合は、以下を使用してください。

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

あなたはまたの値に注意を払うする必要があるかもしれませんmax_queued_eventsし、max_user_instances聴けば文句を続けています。


2
どうもありがとうございました。これにより、プロジェクトが大きくなったときにReact JSで同様のエラーが発生したという問題が解決しましたが、エラーの内外を理解できませんでした。それは正しい答えです、良い一日をお過ごしください
PierreChevallier19年

4
誰かがこれをより良く修正する必要があります。依存関係に満ちた手で新しいプロジェクトを開始するときに、このようなことをする必要はありません。
Patrick

詳細な回答ありがとうございます!それは私を大いに助けました。私はReactNativeを開発していますが、実際にはRNcliにはより多くの価値が必要です。したがって、上記のコマンドで正常に変更します。それの値が高いと、パフォーマンスとメモリ使用量に悪影響を与える可能性があるのではないかと思っています。
moondaddi

8

reactnode_modulesを削除します

rm -r node_modules

yarn or npm install

yarn start or npm start

エラーが発生した場合は、この方法を再度使用してください


なぜこれが機能するのですか?監視するファイルの数が減った場合、必要な依存関係を再インストールするとファイルが追加されませんか?
アイスウォーター

2
@icedwater node_modulesを削除すると、Reactはウォッチなしで新しいinotifyインスタンスを作成します。Reactにリークがあり、inotifyインスタンスがいっぱいになる可能性があります。そのため、最初にエラーが表示されます。
アカウント

7

公式文書から:

「VisualStudioCodeは、この大きなワークスペースでのファイルの変更を監視できません」(エラーENOSPC)

この通知が表示される場合は、ワークスペースが大きく、多くのファイルが含まれているため、VSCodeファイルウォッチャーのハンドルが不足していることを示しています。現在の制限は、以下を実行することで表示できます。

cat /proc/sys/fs/inotify/max_user_watches

編集することで制限を最大に増やすことができます

/etc/sysctl.conf

そして、この行をファイルの最後に追加します。

fs.inotify.max_user_watches = 524288

次に、を実行して新しい値をロードできます。

sudo sysctl -p

Arch Linuxの動作は少し異なることに注意してください。詳細については、inotifyウォッチャーの数を増やすを参照してください。

監視できるファイルの最大数は524,288ですが、特にメモリに制約のある環境にいる場合は、その数を減らすことをお勧めします。各ファイルウォッチは540バイト(32ビット)または約1kB(64ビット)を使用するため、524,288個のウォッチがすべて消費されると仮定すると、上限は約256MB(32ビット)または512MB(64ビット)になります。 )。

別のオプション

files.watcherExclude設定を使用して、VSCodeファイルウォッチャーから特定のワークスペースディレクトリを除外します。files.watcherExcludeのデフォルトでは、node_modulesと.gitの下の一部のフォルダーが除外されていますが、VSCodeで追跡したくない他のディレクトリを追加できます。

"files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/*/**": true
  }

7

sudoieを使用してこの問題を解決しました

sudo yarn start

または

sudo npm start

5
これらのコマンドは、これが問題を解決する方法と理由の説明含めて質問を解決する可能性がありますが、投稿の品質を向上させるのに本当に役立ち、おそらくより多くの賛成票をもたらすでしょう。あなたは今尋ねている人だけでなく、将来読者のために質問に答えていることを忘れないでください。回答を編集して説明を追加し、適用される制限と前提条件を示してください。
ブライアン

これは、これまで構成を変更しない最も簡単なソリューションですが、@ Brianが言ったように、参照または説明が効果的な方法で役立ちます。
天才

1
これは最悪の解決策です。sudoこの種の使用を目的としておらず、他の問題も引き起こす可能性があります。
IgorParra20年

3

私がDebianベースのディストリビューションで開発していたノードアプリでそれが起こりました。最初に、単純な再起動で解決しましたが、別のアプリで再び発生しました。

inotifyするウォッチャーの数に関連しているのでがファイルを監視し、ディレクトリ内の変更を探すために使用するいるため、制限としてより高い数を設定する必要があります。

ここに投稿された回答から解決できまし (彼に感謝します!)

だから、私は走った:

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

https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-detailsで何が起こっているかについてもっと読む

それが役に立てば幸い!


1
Manjaroでうまく機能します!
OmarDulaimi20年

リンクは許可を必要とする上に、ここではウェイバックマシンのバージョンは次のとおりです。web.archive.org/web/20200611175407/https://github.com/guard/...
マフムード・K.

1

@snishalakaがすでに指摘しているように、inotifyウォッチャーの数を増やすことができます。

ただし、デフォルトの数は十分に高く、プロセスが適切にクリーンアップされていない場合にのみ到達すると思います。したがって、関連するgithubの問題で提案されているようにコンピューターを再起動するだけで、エラーメッセージは表示されなくなりました。


1

このリンク[1]を参照してください。Visual Studioコードには、このエラーメッセージの簡単な説明が記載されています。私も同じエラーに遭遇しました。以下のパラメータを関連ファイルに追加すると、この問題が修正されます。

 fs.inotify.max_user_watches=524288

[1] https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc


0

linuxmintディストリビューションでこの問題が発生しました。アプリの/ publicフォルダーに追加したフォルダーとサブフォルダー/ファイルが非常に多い場合に発生したようです。私はこの修正を適用しました、そしてそれはうまくいきました...

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

ディレクトリを/ etcフォルダに変更します。 cd /etc

次に、これを実行します。 sudo systcl -p

ターミナルを閉じて、 npm start何度も。

これが失敗した場合は、react-scriptsをグローバルにインストールし、それを使用してアプリケーションを直接実行することをお勧めします。

$ npm i -g --save react-scripts

次に、npm start実行react-scripts startする代わりに、アプリケーションを実行します。


0

プロジェクトをDockerで実行している場合echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf、コンテナーはその設定を自動的に継承するため、ホストマシンでおよび他のすべてのコマンドを実行する必要があります(コンテナー内で直接実行しても機能しません)。


0

遅い答え、そしてすでに多くの良い答えがあります。

単純なスクリプトで最大ファイルウォッチが十分に大きいかどうかを確認し、そうでない場合は制限を増やしたい場合は、次のようにします。

#!/usr/bin/env bash

let current_watches=`sysctl -n fs.inotify.max_user_watches`

if (( current_watches < 80000 ))
then
  echo "Current max_user_watches ${current_watches} is less than 80000."
else
  echo "Current max_user_watches ${current_watches} is already equal to or greater than 80000."
  exit 0
fi

if sudo sysctl -w fs.inotify.max_user_watches=80000 && sudo sysctl -p && echo fs.inotify.max_user_watches=80000 | sudo tee /etc/sysctl.d/10-user-watches.conf
then
  echo "max_user_watches changed to 80000."
else
  echo "Could not change max_user_watches."
  exit 1
fi

スクリプトは制限を80000に増やしますが、必要な制限を自由に設定してください。


-1
  1. まず、root権限で毎回実行できます

    sudo npm start

  2. または、node_modulesフォルダーを削除して、npm install再インストールに使用することもできます

  3. またはあなたは恒久的な解決策を得ることができます

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


-5

ライブラリを使用しても同じ問題が発生しましたwifiが、ネットワークを変更すると完全に機能しました。

ネットワーク接続を変更する


2
これはコメントだったかもしれません
MilanDesai20年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.