เกินขีด จำกัด การโทรสูงสุดเมื่อติดตั้ง npm


155

ฉันพยายามเรียกใช้npm installนี่เป็นผลลัพธ์จากคอนโซล:

npm ERR! Linux 4.8.0-27-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8

npm ERR! Maximum call stack size exceeded
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

และนี่คือเนื้อหาของnpm-debug.log:

113791 verbose stack RangeError: Maximum call stack size exceeded
113791 verbose stack     at Object.color (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/console-control-strings/index.js:115:32)
113791 verbose stack     at EventEmitter.log._format (/usr/lib/node_modules/npm/node_modules/npmlog/log.js:252:51)
113791 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/log.js:138:24)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113791 verbose stack     at .<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js:23:18)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113791 verbose stack     at .<anonymous> (/usr/lib/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js:23:18)
113791 verbose stack     at emitThree (events.js:116:13)
113791 verbose stack     at emit (events.js:194:7)
113792 verbose cwd /home/giorgi/AdMove/dev/web-advertiser-admove
113793 error Linux 4.8.0-27-generic
113794 error argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
113795 error node v6.9.1
113796 error npm  v3.10.8
113797 error Maximum call stack size exceeded
113798 error If you need help, you may report this error at:
113798 error     <https://github.com/npm/npm/issues>
113799 verbose exit [ 1, true ]

นำออกnode_modulesหลายครั้งและพยายามติดตั้งใหม่ ไม่สามารถเข้าใจได้ว่าอะไรคือสาเหตุที่ทำให้เกิดปัญหาและวิธีแก้ไข


1
ก่อนอื่นฉันจะตรวจสอบลิงก์ปัญหา GitHub สำหรับปัญหาที่คล้ายกันและเพิ่มถ้าไม่ใช่ปัญหาที่ทราบ นอกจากนี้ทำไมคุณพยายามติดตั้ง v4.2.6 บิลด์ล่าสุดในปัจจุบันคือ v7.1.0 และบิลด์เสถียรที่แนะนำคือ v6.9.1 ล้างข้อมูลทุกอย่างลอง 6.9.1 และอัปเดตคำถาม
อนุรักษ์สิ่งแวดล้อม

1
อัปเดตเป็น v6.9.1 ยังมีข้อผิดพลาดเดียวกันและคำถามที่อัปเดตด้วย ขอขอบคุณTheEnvironmentalist
GROX13

1
มีคำแนะนำรอบ ๆ ที่นี่github.com/npm/npm/issues/10776
Boris Charpentier

ฉันกรณีของฉันนี้เกิดจากการประกาศซ้ำใน package.json;)
อัลเบอร์โต S.

ในกรณีของฉันมันเกิดขึ้นเพราะฉันขาดการเชื่อมต่ออินเทอร์เน็ต
RayJ_inSJ

คำตอบ:


98

คำตอบของ metzelderช่วยให้ฉันแก้ไขปัญหาได้ อย่างไรก็ตามหากคุณเรียกใช้คำสั่งnpm cache cleanมันจะส่งข้อความถึงคุณ

ตั้งแต่ npm @ 5, การแคชในตัวเองของ npm จากปัญหาการทุจริตและข้อมูลที่สกัดจากแคชนั้นรับประกันว่าถูกต้อง

ดังนั้น ณ npm5 คุณสามารถทำได้โดยการเพิ่มการ--forceตั้งค่าสถานะให้กับคำสั่ง

ดังนั้นคำสั่งคือ:

npm cache clean --force

145
ฉันหวังว่าคุณจะรู้ว่าคุณกำลังทำอะไรอยู่
CloudMeta

1
สำหรับฉันฉันได้ย้ายไดเรกทอรีการทำงานปัจจุบันไปยังโฟลเดอร์อื่น - ดูเหมือนว่ามันจะปะปนกันไป การลบ node_modules และติดตั้งใหม่ได้ทำเคล็ดลับ
Philippe Hebert

10
@MetaGuru โปรดอธิบายสิ่งที่เป็นผลมาจากการใช้คำสั่งนี้ ...
cdalxndr

3
@CTS_AE ฉันไม่คิดว่าทีม npm จะเพิ่มข้อความนั้นเป็นเรื่องตลก จะต้องมีผลลัพธ์และบางคนควรอธิบาย
cdalxndr

2
@cdalxndr ฉันกำลังบอกว่ามันถูกทิ้งไว้เป็นความคิดเห็นเหมือนเรื่องตลก / เสียดสีเนื่องจากคำพูดโดยตรงจากnpmเขาไม่ได้เพิ่มสิ่งใดที่เป็นประโยชน์ แต่มีมส์มากกว่าตอนนี้ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับคำสั่งจริงได้ที่นี่: docs.npmjs.com/cli-commands/cache.htmlมันอธิบายอย่างชัดเจนถึงแรงที่ทำ ว่ารายการแคชทั้งหมดได้รับการตรวจสอบความถูกต้องอย่างสมบูรณ์แล้วหากบางสิ่งเสียหายมันจะรักษาตัวเองดังนั้นแคชควรจะอยู่ในสถานะที่เหมาะสมและไม่เคยล้างจนกว่าคุณจะพยายามเรียกคืนพื้นที่ดิสก์ดังนั้นคุณจะต้องผนวก--force. หมายเหตุ: อาจแตกต่างกันไปในแต่ละรุ่น
CTS_AE

84

npm rebuild มันแก้ปัญหาของฉันแล้ว


31
ใครสามารถอธิบายคำตอบนี้เพิ่มเติมได้หรือไม่ เหตุใดจึงแก้ปัญหาได้
แพทริค Szalapski

3
ลบ package-lock.json และการสร้างใหม่ npm ทำเคล็ดลับสำหรับฉัน
พบ Patel

ในกรณีของฉันไฟล์บางไฟล์ในโฟลเดอร์. npm ของฉันถูกติดตั้งเป็นรูท การตรวจสอบแคช npm บอกคุณว่ามีอะไรผิดปกติ
kirenpillay

นี่เป็นการหลอกลวง การล้างแคช npm ไม่สามารถใช้งานได้ในโอกาสนี้
พระอิศวร Naru

43

ลองลบpackage-lock.jsonและnode-modulesโฟลเดอร์:

rm package-lock.json
rm -r node_modules

14
คุณกำลังฆ่าวัตถุประสงค์ของ package-lock.json หากคุณลบมันออกไป มันรับประกันว่าการพึ่งพาของคุณจะถูกกำหนดไว้
Eliseu Monar dos Santos

5
จริง แต่ถ้าคุณไม่สามารถติดตั้งแอปของคุณบนแพลตฟอร์มอื่นคุณก็ไม่มีทางเลือกนอกจากทำสิ่งนี้
Marc

19

npm installฉันมีปัญหาเดียวกันกับ หลังจากการค้นหาจำนวนมากฉันพบว่าการลบ.npmrcไฟล์หรือเนื้อหาของคุณ (พบที่%USERPROFILE%/.npmrc) จะช่วยแก้ปัญหานี้ได้ สิ่งนี้ใช้ได้สำหรับฉัน


13
npm uninstall

npm cache clean --force

ฉันใช้สองวิธีนี้ แต่ไม่ได้ผล หลังจากımลบโมดูลโหนดและติดตั้ง npm อีกครั้ง แต่ไม่ทำงานอีกครั้ง สุดท้ายımการลบ package-lock.json และสร้างไฟล์ package-lock.json ใหม่หลังจากนั้นใช้

npm install

และตกลง !!!


5
การลบไฟล์ package-lock.json แก้ไขให้ฉันด้วยขอบคุณ!
Ryan Wilson

11

ฉันได้เอาชนะปัญหานี้โดยทำตาม:

  • ลบเนื้อหาทั้งหมดของการพึ่งพา npm คุณสามารถค้นหาตำแหน่งการติดตั้งเริ่มต้นตามหัวข้อนี้: https://stackoverflow.com/a/5926706/1850297

  • ก่อนที่คุณจะรันnpm installคำสั่งฉันแนะนำให้รันnpm cache clean --force


ข้อความจากnpm cache clean: "ตั้งแต่ npm @ 5, การแคชในตัวเองของ npm จากปัญหาการทุจริตและข้อมูลที่ดึงมาจากแคชนั้นรับประกันว่าถูกต้อง"
Ian Grainger

7

ฉันลบไปแล้ว

node_modules

แล้วติดตั้งใหม่โดย

ติดตั้ง NPM

มันใช้งานได้สำหรับฉัน


2
ตลกพอฉันได้เพื่อรีสตาร์ทคอมพิวเตอร์ของฉันนอกเหนือไปจากขั้นตอนของคุณให้มันทำงานตั้งแต่ผมทำงานร่วมกับ WSL
Avshalom



3

การทำความสะอาดแคช npm ส่งคืนข้อความด้านล่าง

ตั้งแต่ npm @ 5, การแคชในตัวเองของ npm จากปัญหาการทุจริตและข้อมูลที่สกัดจากแคชนั้นรับประกันว่าถูกต้อง หากคุณต้องการให้แน่ใจว่าทุกอย่างสอดคล้องกันให้ใช้ 'การตรวจสอบแคช npm' แทน ในทางกลับกันหากคุณกำลังดีบักปัญหาด้วยตัวติดตั้งคุณสามารถใช้npm install --cache /tmp/empty-cacheเพื่อใช้แคชชั่วคราวแทนการดักจับสิ่งที่เกิดขึ้นจริง

ถ้าคุณเรียกใช้การตรวจสอบแคช npm ตามที่ระบุข้างต้นมันจะทำการตรวจสอบแคชและการรวบรวมขยะซึ่งแก้ไขปัญหาได้จริง

แคชที่ตรวจสอบและบีบอัด (~ \ AppData \ Roaming \ npm-cache_cacache): ตรวจสอบเนื้อหา: 6183 (447214684 ไบต์) เนื้อหาที่รวบรวมขยะ: 16 (653745 ไบต์) รายการดัชนี: 9633


นี่ก็เพียงพอแล้วสำหรับฉัน การตรวจสอบแคช npm แก้ไขปัญหาด้วยวิธีการลบ node_modules ที่ไม่ได้ (และฉันจะไม่ล้างแคชหรือ package-lock.json) ค่อนข้างแน่ใจว่านี่เป็นปัญหากับ NPM แม้ว่า ไม่เห็นว่าทำไมการตรวจสอบแคช npm จะเปลี่ยนอะไรถ้ามันรักษาตัวเองได้อย่างแท้จริง
Stuart Watt

3

ปัญหานี้อาจเกิดขึ้นได้หากคุณพยายามติดตั้งแพคเกจที่ไม่มีอยู่หรือหากคุณพยายามติดตั้งเวอร์ชันที่ไม่มีอยู่


2

คุณถอนการติดตั้งแพ็กเกจ npm และบังคับให้ล้างแคชและปิดเทอร์มินัลแล้วติดตั้งแพคเกจใดก็ได้

$sudo npm uninstall <package - name>
$sudo npm cache clean --force

จากนั้นรีสตาร์ทเทอร์มินัลและตรวจสอบ

ยังคงไม่ทำงานอัปเกรดทั้ง npm และโหนดเป็นเวอร์ชันล่าสุด


2

ในกรณีที่คำตอบเหล่านี้ไม่เหมาะกับคุณอาจเป็นเพราะเทอร์มินัลที่คุณใช้ไม่ถูกต้อง / node_modulesส่วนอื่นของคอมพิวเตอร์ของคุณถูกใช้งาน

ในกรณีของฉันฉันยังคงอยู่ระหว่างข้อผิดพลาดนี้ (เกินขนาดสแต็คการโทรสูงสุด) และเหตุการณ์ข้อผิดพลาดการเข้าถึงเมื่อฉันทำ sudo npm iและเหตุการณ์ผิดพลาดการเข้าถึงเมื่อฉันได้

การแก้ไขคือการปิด IDE ของฉัน (ซึ่งเป็น webstorm) รันnpm iในเทอร์มินัลพื้นฐานและนั่นก็คือ


การปิดตัวแก้ไขแก้ไขให้ฉัน (Netbeans สำหรับฉัน)
Wim Pruiksma

2

ฉันไม่ได้เป็นผู้ใช้ของ Windowsดังนั้นถ้าคุณมีความพยายามที่จะตรวจสอบความคิดเห็น Rene Knop

สำหรับUnix / OSXผู้ใช้ผมได้ลบราก.npmrc~/.npmrcไฟล์
ก่อนที่คุณจะลองใช้โปรดตรวจสอบว่าคุณไม่จำเป็นต้องใช้คำสั่งนี้เพื่อนำเนื้อหาทั้งหมดเข้าสู่เทอร์มินัลของคุณ:cat ~/.npmrcตรวจสอบว่ามีอะไรที่จำเป็นกว่านั้นคุณสามารถใช้คำสั่งนี้จะนำเนื้อหาทั้งหมดเข้ากับขั้วของคุณ:

หากคุณมีสิ่งที่ชอบ:

cat: /Users/$USER/.npmrc: No such file or directory

เพื่อบันทึกสำเนา:

cp ~/.npmrc ~/.npmrc_copy

ตอนนี้ให้ลองลบออก (ใช้งานได้สำหรับผู้ใช้ทุบตี: Unix / Ubuntu / OSX ... ):

rm -f ~/.npmrc

สิ่งนี้ใช้ได้สำหรับฉัน
หวังว่านี่จะเป็นประโยชน์สำหรับคนอื่น ๆ


2

ฉันแก้ไขได้ 100% ฉันมีปัญหากับเวอร์ชันอึก: 3.5.6

คุณควรทำความสะอาด package-lock.js จากนั้นเรียกใช้npm installและทำงานในแบบฟอร์ม


2

ฉันก็มีปัญหาเดียวกัน ฉันได้ลองวิธีแก้ไขปัญหาก่อนหน้านี้ แต่วิธีแก้ปัญหาสำหรับฉันนั้นง่ายกว่ามาก ฉันต้องลบพื้นที่ในไดเรกทอรีแล้วจึงเรียกใช้npm iอีกครั้ง

ขอบคุณ: https://github.com/nodejs/node-gyp/issues/809#issuecomment-155019383สำหรับการชี้เรื่องนี้


1

ฉันพยายามทุกอย่างเพื่อแก้ไขปัญหานี้ใน Mac ของฉัน ฉันคิดว่าปัญหาเริ่มต้นขึ้นเมื่อฉันดาวน์โหลด npm จาก Node.js แล้วติดตั้งใหม่กับ Homebrew ขณะที่ติดตามพร้อมกับวิดีโอ Team Treehouse

นี่คือสิ่งที่ฉันพยายาม:

จากhttps://docs.npmjs.com/misc/removing-npm

sudo npm uninstall npm -g
sudo make uninstall
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

จากฉันจะถอนการติดตั้ง Node.js ได้อย่างไรและติดตั้งใหม่ตั้งแต่ต้น (Mac OS X)

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

นี่คือสิ่งที่ทำงาน:

ในท้ายที่สุดสิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือการคัดลอก repo ที่ติดตั้งมาใหม่จาก GitHub ซึ่งจะลบทุกอย่างที่เกี่ยวข้องกับ npm บน Mac ของฉัน

https://github.com/brock/node-reinstall

ฉันต้องติดตั้งโหนดใหม่และ npm จาก Node.js


1

สภาพแวดล้อมการพัฒนา บริษัท ของเราใช้Artifactoryเป็นรีจิสตรีเริ่มต้นสำหรับการอ้างอิง NPM ของเราและเมื่อรันnpm installมันเป็นการเริ่มต้นซึ่งไม่ทำงาน ... ดังนั้นการระบุรีจิสตรีหลัก NPM หลักด้วยตนเองผ่านการnpm install --registry https://registry.npmjs.orgแก้ไขปัญหานี้ให้ฉัน ...


1

ฉันกำลังเผชิญกับข้อผิดพลาดเดียวกันฉันพยายามติดตั้งล้อเล่นเข้ากับหนึ่งในแพ็คเกจในโครงการ monorepo

หากคุณกำลังใช้เส้นด้าย + Learna การแพคเกจโครงการ monorepo คุณจะต้องนำทางไปยัง package.json ภายในแพคเกจเป้าหมายและเรียกใช้หรือnpm installnpm install <package name>


0

ฉันมีปัญหานี้และมันเป็นเพราะการอัพเกรดของปฏิบัติการคอมไพล์ของฉัน ฉันย้อนกลับไปที่ Git-2.21.0.rc1.windows.1-64-bit และเพิ่มสิ่งนี้ในเส้นทางสภาพแวดล้อมของฉันและมันแก้ไขปัญหาของฉันได้


0

ฉันพยายามทุกอย่างเพื่อแก้ไขปัญหานี้ในเครื่อง windows 7 ของฉันเช่น

การติดตั้งและสร้างใหม่ npm

ในที่สุดฉันก็แก้ไขปัญหาการตั้งค่าการกำหนดค่าขนาดเล็กนี้ด้วยการเสียทั้งวัน

ฉันจะแก้ไขปัญหานี้ได้อย่างไร

การลบการกำหนดค่าเฉพาะโครงการของฉันใน. npmrc ทั่วโลกที่ตำแหน่งเช่นไดรฟ์: / Windows / Users /../. npmrc


0

สิ่งหนึ่งที่ทำงานได้ดีที่สุดสำหรับฉันบน Mac คือการอัปเกรดจากโหนด 8.12 เป็น 10.x โดยใช้ NVM

ฉันถอนการติดตั้ง Node เวอร์ชันอื่นทั้งหมดด้วย NVM จากนั้นติดตั้ง 10.x จากนั้นรันnvm alias default nodeซึ่งบอก NVM ให้ใช้ค่าเริ่มต้นเป็นโหนดรุ่นล่าสุดที่มีอยู่บนเชลล์เสมอ

หลังจากนั้นปัญหาการโหลดสดของฉันก็หายไป!



0

สำหรับผู้ที่มีปัญหานี้เมื่อสร้างอิมเมจ Docker ด้วย Jenkins (หรือ CI ใด ๆ ) ตรวจสอบให้แน่ใจว่าpackage-lock.jsonคัดลอกไปยังคอนเทนเนอร์ด้วย

COPY ./src/package*.json /home/node/
RUN npm install

สำหรับเราแล้วการติดตั้งใช้งานได้จริงข้อผิดพลาดเกิดขึ้นเฉพาะเมื่อเรียกใช้npm prune productionอิมเมจการผลิต


ฉันมีปัญหากับการตัด npm และ NODE_ENV ไม่ได้ตั้งเป็นการผลิต แก้ไขโดยการลบ node_modules และติดตั้ง npm อีกครั้ง
Eduardo

0

หากรีจิสทรี npm เริ่มต้นของคุณเป็นอย่างอื่นที่ไม่ใช่ที่เก็บสาธารณะ npm (คุณสามารถตรวจสอบได้โดยไปที่ไฟล์. npmrc ของคุณหรือตรวจสอบการกำหนดค่า npm ของคุณผ่านคำสั่ง npm CLI) คุณสามารถลองยกเลิกการตั้งค่ารีจิสทรีเพื่อให้ชี้ไปที่สาธารณะ ที่เก็บ npm จากนั้นเรียกใช้npm installอีกครั้ง

หากคุณมีการอ้างอิงที่ไม่พร้อมใช้งานในที่เก็บ npm สาธารณะลองลบการอ้างอิงเหล่านั้นออกจาก package.json ชั่วคราว npm installนี้จะช่วยให้คุณสามารถเรียกใช้ สุดท้ายให้ย้อนกลับการอ้างอิงและการกำหนดค่ารีจิสตรีที่คุณลบออกและรันnpm installเป็นครั้งสุดท้ายเพื่อติดตั้งส่วนที่เหลือของการอ้างอิง


0

วันนี้เราพบข้อผิดพลาดนี้เมื่อทำงานnpm pruneแม้หลังจากเรียกnpm cache clean --forceการทำงาน

รุ่น:

node 13.8.0 
npm 6.13.6

การลบpackage-lock.jsonงานสำหรับกรณีนี้เช่นกัน ขอบคุณทุกคน!


0

ฉันกำลังเผชิญกับข้อผิดพลาดที่คล้ายกัน ฉันติดตามมันถึงความจริงที่ว่า npm ไม่สามารถลบไฟล์ออกจากโฟลเดอร์. bin สำหรับโฟลเดอร์ลิงก์ npm ดังนั้นฉันจึงเข้าไปและ rm -rf โฟลเดอร์. bin ทั้งหมดจากโฟลเดอร์ลิงก์ npm

find "linked-folder" -type d -name ".bin" -print  
For all folders listed | rm -rf  

ที่แก้ไขปัญหา


0

ฉันเจอปัญหาเดียวกัน แต่ในกรณีของฉันฉันใช้yarnตั้งแต่เริ่มต้น แต่จาก readme ของแพ็คเกจฉันคัดลอกnpm installคำสั่งและได้รับข้อผิดพลาดนี้ ต่อมาตระหนักว่าการyarn add <package-name>แก้ไขปัญหาและแพคเกจถูกติดตั้ง

มันอาจช่วยคนในอนาคต


0

ขั้นตอนต่อไปนี้ช่วยฉันแก้ปัญหานี้:

  1. หยุดแถบปฏิกิริยาทั้งหมด (เช่นเริ่มสร้าง)
  2. วิ่ง npm cache clean --force
  3. วิ่ง npm install

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