Node.JS : 오류 가져 오기 : [nodemon] 내부 시계 실패 : ENOSPC 시계


136

방금 운영 체제에 처음으로 설치 Node.js했습니다 Ubuntu 14.04. 나는 또한 설치했다 npm. 설치 과정의 다음 단계는 설치 nodemon였습니다. 이 모든 것이 잘 작동했습니다.


그러나 명령 줄 nodemon을 입력하여 실행 nodemon app.js하면 다음 오류가 발생합니다 ...

[nodemon] 1.8.1 [nodemon] to restart at any time, enterRS [nodemon] watching: *.* [nodemon] starting노드 app.js [nodemon] Internal watch failed: watch ENOSPC

오류 아래의 명령 행에서 ...

alopex@Alopex:~/Desktop/coding_dojo/week-9/javascript/node/testing_node$ Hello World

왜 이런 일이 발생합니까? 이것이 nodemon에 대한 정상적인 동작입니까? 그렇지 않은 경우 어떻게 해결할 수 있습니까?


부가 정보 ...

1) 파일은 그 안에 app.js있는 Javascript파일입니다 console.log(111).
2) node버전은 v0.10.25
3) npm버전은 1.3.10
4) nodemon버전은 1.8.1
5) ubuntu버전입니다 ...

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

답변:


451

내 최대 포트가 올바르게 구성되지 않은 것 같습니다. 나는 다음 코드를 실행했고 효과가 있었다 ...

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

이 명령은 단일 사용자에게 허용되는 시계 수를 늘리는 것입니다. 기본적으로 숫자는 낮을 수 있습니다 (예 : 8192). nodemon많은 수의 디렉토리를보고 변경을 시도 하면 여러 개의 감시를 작성해야하는데이 한계를 초과 할 수 있습니다.

다음을 통해이 문제를 해결할 수도 있습니다.

sudo sysctl fs.inotify.max_user_watches=582222 && sudo sysctl -p

그러나 처음 작성된 방식은이 변경을 영구적으로 만듭니다.


6
누군가 이것이 이것이하는 일에 대해 조금 더 설명하고 왜 그것이 도움이 될 수 있는지 자세히 설명 할 수 있습니까?
Hinrich

11
@Hinrich, 그것은 단지 추측입니다, nodejs는 inotify 라이브러리를 통해 파일 시스템 변경을 감시한다고 생각합니다. 최대 시계 수에 대한 사용자 당 제한이 있다고 생각합니다.이 설정은 더 큰 값으로 변경됩니다.
ᐅ devrimbaris은

2
@devrimbaris 맞습니다!
Erik Åsland

3
우분투 14.04에서 우분투 16.04로 이동 한 후에 나에게 일어난 일입니다. 귀하의 솔루션도 저에게 효과적이었습니다. 감사합니다
Mestre San

2
/etc/sysctl.d/90-override.conf당신이 Arch 에 있다면 그것을 입으십시오
OverCoder

28

에릭, 당신은 다른 노드 프로세스를 모두 죽일 수 있습니다.

pkill -f 노드

그런 다음 서버를 다시 시작하십시오. 그때 잘 작동합니다.


7
이로 인해 Visual Studio Code 창이 정지되었습니다.
LexH

이것은 매력처럼 작동했습니다 ... 지금까지! 이제는 효과가 없으며 동일한 오류가 발생합니다.
kestrel

28

실행중인 노드 서버에 다음 오류 및 솔루션이 표시됩니다.

nodemon server.js

[nodemon] 1.17.2

[nodemon] 언제든지 다시 시작하려면 다음을 입력하십시오. rs

[nodemon] 관찰 : .

[nodemon] 시작 node server.js

[nodemon] 내부 시계 실패 : watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

또는

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

19

여기의 논의에 따라 , ENOSPC의미 Error No more hard-disk space available합니다. nodemon또는 gulp-nodemon(필자의 경우) 필요한 메모리가 많은 이유 는 폴더의 내용을보고 있지 않기 때문입니다. 해당 nodemon을 수정하려면 nodemon ignore에게 감시하지 않는 것을 알려주는 데 사용할 수있는 설정이 있습니다. 여기서 nodemon sample config를 살펴보십시오 .


잘 했어, 이것이 근본 원인이다.
lutaoact

16
[nodemon] Internal watch failed: watch /home/Document/nmmExpressServer/bin ENOSPC
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! nmmexpressserver@0.0.0 start: `nodemon ./bin/www`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the nmmexpressserver@0.0.0 start script.

이것은 내가 실행할 때 얻은 오류 nodemon ./bin/www입니다.

솔루션은 프로젝트 창에서 전체 폴더 디렉토리가 열린 Atom 창닫았 습니다.

이유를 모르겠지만 Atom과 nodemon이 비슷한 프로세스를 사용하여 파일 / 폴더를 감시한다고 가정합니다.


2
바로 내 문제였습니다. 프로젝트의 설치 디렉토리에서 atom을 시작했습니다. 나는 원자를 닫고 다른 디렉토리에서 발사했는데 문제가 사라졌습니다.
예.

제 경우에는 우분투의 Sublime에서도 마찬가지입니다. IDE를 닫으면 제대로 실행할 수 있습니다. 그것에 대한 팁이 있습니까?
Shad

수정되었는지 확인하기 위해 복제하지 않았습니다.
codeinaire

감사. Gitkraken을 닫으면 광산이 작동합니다. 이것은 이상한 문제입니다. 따라서 동일한 폴더를 모니터링하는 두 개의 프로세스를 가질 수 없다는 것을 의미합니까?
Zhang LongQI

여기에 많은 inotify 시계를 사용하는 것은 Nextcloud 클라이언트였습니다. 고마워요!
Bill McGonigle

8

이 시도....

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

반항적으로 작동합니다


1
나는이 도전의 반항적 인 성격을 좋아합니다
SimplyKnownAsG

7

nodemon.json루트 폴더에 구성 파일을 추가하고 무시 패턴을 지정하십시오 (예 :

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • 기본적으로 참고 .git, node_modules, bower_components, .nyc_output, coverage그리고 .sass-cache당신이 당신의 구성에 추가 할 필요가 없습니다 무시됩니다.

설명 :이 오류 nodemon는 시스템에서 허용하는 최대 감시자 수를 초과했기 때문에 발생합니다 (즉, 모든 파일을 감시 할 수있는 디스크 공간 이 부족하여 중요한 파일을보고 있지 않음을 의미합니다). 따라서 빌드 출력 또는 테스트 사례와 같이 중요하지 않은 파일은 변경하지 않아도됩니다.


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

이것은 나를 위해 일했다


1
이것이 어떻게 질문에 대답하는지에 대한 설명을 추가하십시오.
Jason Aller

제대로 작동
Rohit Parte

3

내 경우에는 Visual Studio 코드를 닫은 다음 서버를 시작하여 트릭을 수행했습니다.

운영 체제-우분투 16.4 LTD

node.js 버전-8.11.1

npm 버전-6.0.0


그가 비주얼 스튜디오를 사용하지 않은 것 같습니다.
Julien Revault d' A ... 15시 52 분

1
질문에 VS 코드가 포함되어 있지 않기 때문에 질문에 직접 대답하지는 않지만 문제가 해결되었습니다.
Chasen Bettinger

2

무시할 디렉토리 목록 (예 : 부정)을 지정하는 대신 감시 할 디렉토리 목록 (예 : 긍정적)을 지정할 수도 있습니다.

nodemon --watch dir1 --watch dir2  dir1/examples/index.js

필자의 경우에는 하나의 디렉토리를보고 약 9 개의 디렉토리를 무시하고 싶기 때문에 '--watch'를 지정하는 것이 '--ignore'를 지정하는 것보다 훨씬 간단했습니다.


0

나는 같은 오류가 있었지만 Windows 10의 Ubuntu 14.04 (Windows의 Ubuntu의 Bash)에서. 오류를 극복하기 위해 크리에이터 업데이트를 업데이트하는 것만으로 16.04 버전의 Ubuntu bash를 설치할 수 있었고 최신 버전의 노드를 설치 한 후 ( 단계까지) 최신 버전의 npm을 설치 한 다음 nodemon 제대로 작동하기 시작했습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.