[react-native] React Native Error : ENOSPC : 파일 감시자 수에 대한 시스템 제한에 도달했습니다.

새로운 빈 반응 네이티브 앱을 설정했습니다.

몇 개의 노드 모듈을 설치 한 후이 오류가 발생했습니다.

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?



답변

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


답변

이 오류의 의미는 시스템이 모니터링하는 파일 수가 한계에 도달했음을 의미합니다 !!

결과 : 실행 된 명령이 실패했습니다! 또는 경고 발생 (예 : 반응 네이티브 시작 VSCode 실행)

해결책:

시스템 모니터링 파일 수 수정

우분투

sudo gedit /etc/sysctl.conf

하단에 줄 추가

fs.inotify.max_user_watches=524288

그런 다음 저장하고 종료하십시오!

sudo sysctl -p

그것을 확인하기 위해

그러면 해결됩니다!


답변

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 키를 눌러 실행하십시오.


기술적 세부 사항

Listen은 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계속해서 불평하는 경우 에도 마찬가지 입니다.


답변

반응 node_modules 삭제

rm -r node_modules

yarn or npm install

yarn start or npm start

오류가 발생하면이 방법을 다시 사용하십시오.


답변

로부터 공식 문서 :

“Visual Studio Code는이 큰 작업 영역에서 파일 변경을 감시 할 수 없습니다.”(ENOSPC 오류)

이 알림이 표시되면 작업 영역이 크고 많은 파일이 포함되어 있기 때문에 VS Code 파일 감시자에 핸들이 부족함을 나타냅니다. 현재 제한은 다음을 실행하여 볼 수 있습니다.

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 설정을 사용하여 VS Code 파일 감시자에서 특정 작업 공간 디렉토리를 제외하는 것입니다. files.watcherExclude의 기본값은 node_modules 및 .git 아래의 일부 폴더를 제외하지만 VS Code가 추적하지 않도록하려는 다른 디렉토리를 추가 할 수 있습니다.

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


답변

나는 sudo ie를 사용 하여이 문제를 해결했습니다.

sudo yarn start

또는

sudo npm start


답변

데비안 기반 배포판에서 개발하고 있던 노드 앱으로 나에게 일어났습니다. 첫째, 간단한 다시 시작으로 문제가 해결되었지만 다른 앱에서 다시 발생했습니다.

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 에서 무슨 일이 일어나고 있는지 자세히 알아보십시오.

도움이 되었기를 바랍니다.