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] startingnode 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
มันเพิ่งเกิดขึ้นกับฉันหลังจากจาก Ubuntu 14.04 ไปเป็น Ubuntu 16.04 โซลูชันของคุณก็ใช้ได้สำหรับฉันเช่นกัน ขอบคุณ
Mestre San

2
ใส่ตัวเลือกนี้/etc/sysctl.d/90-override.confหากคุณอยู่ใน Arch
OverCoder

28

เอริค, คุณสามารถฆ่ากระบวนการโหนดอื่นทั้งหมดด้วย

pkill -f node

จากนั้นรีสตาร์ทเซิร์ฟเวอร์ของคุณอีกครั้ง มันจะทำงานได้ดีแล้ว


7
Downvote เพราะนี่ทำให้หน้าต่าง Visual Studio Code ของฉันหยุดนิ่ง
LexH

มันใช้งานได้อย่างมีเสน่ห์ ... จนถึงตอนนี้! ตอนนี้มันใช้งานไม่ได้ผลได้รับข้อผิดพลาดเดียวกัน
ชวา

28

ในการใช้งานเซิร์ฟเวอร์โหนดแสดงข้อผิดพลาดและการแก้ปัญหาดังต่อไปนี้:

เซิร์ฟเวอร์ nodemon.js

[nodemon] 1.17.2

[nodemon] เพื่อเริ่มต้นใหม่ได้ตลอดเวลาให้ป้อน rs

[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 นั้นมีignoreการตั้งค่าที่สามารถใช้บอก nodemon ว่าต้องระวังอะไร มีลักษณะที่ตัวอย่างการตั้งค่า nodemon ที่นี่


ดีมากนี่คือสาเหตุที่แท้จริง
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
นั่นคือปัญหาของฉัน ฉันยินดีที่จะเปิดตัวอะตอมจากไดเรกทอรีการติดตั้งของโครงการ ฉันปิดอะตอมเปิดตัวมันจาก dir อื่นและปัญหาก็หายไป
ยะ

ในกรณีของฉันสิ่งเดียวกันก็เกิดขึ้นใน Sublime ใน Ubuntu เมื่อฉันปิด IDE ฉันสามารถเรียกใช้ได้อย่างถูกต้อง มีคำแนะนำเกี่ยวกับเรื่องนี้ไหม?
Shad

ฉันไม่ได้พยายามทำซ้ำเพื่อดูว่าได้รับการแก้ไขแล้วหรือไม่
codeinaire

ขอบคุณ ฉันสามารถทำงานได้หลังจากฉันปิด Gitkraken นี่เป็นปัญหาที่แปลก ดังนั้นหมายความว่าเราไม่สามารถมีสองกระบวนการตรวจสอบโฟลเดอร์เดียวกันได้หรือไม่
Zhang LongQI

นี่คือลูกค้าของ 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

ในกรณีของฉันปิดรหัสสตูดิโอภาพแล้วเริ่มต้นเซิร์ฟเวอร์ได้หลอกลวง

ระบบปฏิบัติการ - Ubuntu 16.4 lts

รุ่น node.js - 8.11.1

เวอร์ชัน npm - 6.0.0


ดูเหมือนว่าเขาไม่ได้ใช้สตูดิโอภาพ
Julien Revault d'A ...

1
แม้ว่าสิ่งนี้จะไม่ตอบคำถามโดยตรง (เพราะคำถามนั้นไม่เกี่ยวข้องกับ VS Code) แต่วิธีนี้ก็แก้ปัญหาของฉันได้
Chasen Bettinger

2

แทนที่จะระบุรายชื่อของไดเรกทอรีที่จะเพิกเฉย (เช่นลบ) คุณสามารถระบุรายการไดเรกทอรีที่จะดู (เช่นบวก):

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

ในกรณีของฉันโดยเฉพาะฉันมีไดเรกทอรีเดียวที่ฉันต้องการดูและประมาณเก้าแห่งที่ฉันต้องการเพิกเฉยดังนั้นการระบุ '--watch' นั้นง่ายกว่าการระบุ '--ignore'


0

ฉันมีข้อผิดพลาดเดียวกัน แต่ใน Ubuntu 14.04 ภายใน Windows 10 (ทุบตีบน Ubuntu บน Windows) สิ่งที่ฉันทำเพื่อเอาชนะข้อผิดพลาดคือการอัปเดตอัปเดตผู้สร้างซึ่งอนุญาตให้ฉันติดตั้ง Ubuntu ทุบตีรุ่น 16.04 แล้วหลังจากติดตั้งโหนดรุ่นใหม่ล่าสุด (โดยขั้นตอนนี้ ) ฉันติดตั้งรุ่นล่าสุดของ npm แล้วด้วย nodemon เริ่มทำงานอย่างถูกต้อง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.