Kích thước ngăn xếp cuộc gọi tối đa vượt quá khi cài đặt npm


154

Tôi đang cố chạy npm install, đây là đầu ra từ bàn điều khiển:

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>

và đây là nội dung của 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 ]

Đã gỡ bỏ node_modulesnhiều lần và cố gắng cài đặt lại. Không thể hiểu lý do gây ra điều này và cách khắc phục.


1
Trước hết, tôi sẽ kiểm tra liên kết các vấn đề của github cho các vấn đề tương tự và thêm nó nếu đó không phải là vấn đề đã biết. Ngoài ra, tại sao bạn lại cố gắng cài đặt v4.2.6? Bản dựng mới nhất hiện tại là v7.1.0 và bản dựng ổn định được đề xuất là v6.9.1. Xóa tất cả mọi thứ, thử 6.9.1 và cập nhật câu hỏi.
TheEnvironmentalist

1
Cập nhật lên v6.9.1 vẫn có lỗi tương tự và câu hỏi cập nhật cũng có. Thanks anyway TheEnvironmentalist
GROX13

1
Một số lời khuyên quanh đây github.com/npm/npm/issues/10776
Boris Charpentier

Theo trường hợp của tôi, điều này được gây ra do sự suy giảm đệ quy trong gói.json;)
Alberto S.

trong trường hợp của tôi, nó đã được gây ra bởi vì tôi đã mất kết nối internet
RayJ_inSJ

Câu trả lời:


96

Câu trả lời của metzelder đã giúp tôi khắc phục vấn đề. tuy nhiên nếu bạn chạy lệnh npm cache clean, nó sẽ cho bạn một thông báo

Kể từ npm @ 5, bộ đệm npm tự chữa lành khỏi các vấn đề tham nhũng và dữ liệu được trích xuất từ ​​bộ đệm được đảm bảo là hợp lệ

Vì vậy, kể từ npm5 bạn có thể làm bằng cách thêm một --forcecờ vào lệnh.

Vì vậy, lệnh là:

npm cache clean --force

143
Tôi chắc chắn hy vọng bạn biết những gì bạn đang làm.
CloudMeta

1
Đối với tôi, tôi đã chuyển thư mục làm việc hiện tại sang thư mục khác - có vẻ như nó đã bị xáo trộn. Xóa node_modules và cài đặt lại đã thực hiện thủ thuật
Philippe Hebert

10
@MetaGuru vui lòng giải thích hậu quả của việc chạy lệnh này là gì ...
cdalxndr

3
@CTS_AE Tôi không nghĩ nhóm npm đã thêm tin nhắn đó như một trò đùa. Phải có một hậu quả và ai đó nên giải thích nó.
cdalxndr

2
@cdalxndr Tôi đã nói rằng nó được để lại như một bình luận như một trò đùa / châm biếm, như một trích dẫn trực tiếp từ npmanh ấy không thực sự thêm bất cứ điều gì hữu ích, nhưng nhiều hơn một meme vào thời điểm này. Bạn có thể đọc thêm về lệnh thực tế tại đây: docs.npmjs.com/cli-commands/cache.html nó giải thích rõ ràng những gì lực lượng làm; rằng tất cả các mục bộ đệm hiện đã được xác minh đầy đủ về tính toàn vẹn của chúng, nếu có gì đó bị hỏng, nó sẽ tự phục hồi, do đó, bộ đệm phải luôn ở trạng thái thích hợp và không bao giờ bị xóa trừ khi bạn cố gắng lấy lại dung lượng ổ đĩa, do đó bạn sẽ cần phải thêm vào --force. Lưu ý: Có thể khác nhau cho mỗi phiên bản.
CTS_AE

83

npm rebuild nó đã giải quyết vấn đề của tôi


31
Bất cứ ai có thể giải thích câu trả lời này hơn nữa? Tại sao điều này giải quyết vấn đề?
Patrick Szalapski

3
đã xóa gói-lock.json và npm xây dựng lại đã giúp tôi
Gặp Patel

trong trường hợp của tôi, một số tệp trong thư mục .npm của tôi đã được cài đặt dưới dạng root. npm cache xác minh cho bạn biết những gì sai.
kirenpillay

Điều này đã lừa npm cache clean không hoạt động trong dịp này.
Shiva Naru

43

Hãy thử loại bỏ package-lock.jsonnode-modulesthư mục:

rm package-lock.json
rm -r node_modules

14
Bạn đang giết mục đích của gói-lock.json nếu bạn xóa nó. Nó đảm bảo rằng sự phụ thuộc của bạn sẽ được xác định.
Eliseu Monar dos Santos

5
Đúng, nhưng nếu bạn không thể cài đặt ứng dụng của mình trên một nền tảng khác, thì bạn không còn cách nào khác ngoài làm điều này.
Marc

19

Tôi đã có cùng một vấn đề với npm install. Sau rất nhiều tìm kiếm, tôi phát hiện ra rằng việc xóa .npmrctệp của bạn hoặc nội dung của nó (tìm thấy tại %USERPROFILE%/.npmrc), sẽ giải quyết vấn đề này. Điều này làm việc cho tôi.


13
npm uninstall

npm cache clean --force

Tôi sử dụng hai phương pháp này nhưng nó không hoạt động. Sau khi tôi xóa các mô-đun nút và cài đặt lại npm nhưng nó không hoạt động trở lại. Cuối cùng, tôi sẽ xóa gói-lock.json và tạo tệp gói-lock.json mới sau đó bằng cách sử dụng

npm install

và được rồi !!!


5
Xóa tệp gói-lock.json đã sửa nó cho tôi, Cảm ơn!
Ryan Wilson

11

Tôi đã khắc phục vấn đề này bằng cách làm như sau:

  • Xóa tất cả nội dung của các phụ thuộc npm. Bạn có thể tìm vị trí cài đặt mặc định theo chủ đề này: https://stackoverflow.com/a/5926706/1850297

  • Trước khi bạn chạy npm installlệnh, tôi đề nghị chạynpm cache clean --force


Thông báo từ npm cache clean: "Kể từ npm @ 5, bộ nhớ cache npm tự phục hồi khỏi các vấn đề tham nhũng và dữ liệu được trích xuất từ ​​bộ đệm được đảm bảo là hợp lệ."
Ian Grainger

7

tôi đã xóa

nút_modules

và sau đó được cài đặt lại bởi

cài đặt npm

Nó làm việc cho tôi


2
đủ buồn cười tôi đã phải khởi động lại, máy tính của tôi ngoài các bước của bạn để nó hoạt động, vì tôi đang làm việc với wsl
Avshalom

7

Trong trường hợp của tôi, cập nhật lên phiên bản mới nhất:

npm install -g npm


5

Tôi chỉ làm npm rebuildviệc đó như say mê.


3

npm cache sạch sẽ trả về bên dưới tin nhắn

Kể từ npm @ 5, bộ đệm npm tự chữa lành khỏi các vấn đề tham nhũng và dữ liệu trích xuất từ ​​bộ đệm được đảm bảo là hợp lệ. Nếu bạn muốn đảm bảo mọi thứ đều nhất quán, thay vào đó hãy sử dụng 'npm cache verify'. Mặt khác, nếu bạn gỡ lỗi một vấn đề với trình cài đặt, bạn có thể sử dụng npm install --cache /tmp/empty-cacheđể sử dụng bộ đệm tạm thời thay vì gỡ bỏ cái thực tế.

nếu bạn chạy npm cache xác minh như được chỉ định ở trên thì nó thực sự chạy xác minh bộ đệm và bộ sưu tập rác giúp khắc phục sự cố

Đã xác minh và nén bộ nhớ cache (~ \ AppData \ Roaming \ npm-cache_cacache): Nội dung được xác minh: 6183 (447214684 byte) Nội dung được thu thập rác: 16 (653745 byte) Mục nhập chỉ mục: 9633


Điều này là đủ cho tôi. npm cache xác minh đã khắc phục sự cố theo cách loại bỏ node_modules. (Và tôi sẽ không nuke cache hoặc gói-lock.json). Mặc dù khá chắc chắn đây là một vấn đề với npm. Không thể thấy lý do tại sao npm cache xác minh sẽ thay đổi bất cứ điều gì nếu nó thực sự tự phục hồi.
Stuart Watt

3

Vấn đề này cũng có thể xảy ra nếu bạn đang cố gắng cài đặt một gói không tồn tại hoặc nếu bạn đang cố cài đặt một phiên bản không tồn tại.


2

Bạn gỡ cài đặt gói npm và buộc làm sạch bộ đệm và đóng terminal và cài đặt lại gói nào.

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

Sau đó khởi động lại thiết bị đầu cuối và kiểm tra

Vẫn không hoạt động nâng cấp cả npm và nút lên phiên bản mới nhất


2

Trong trường hợp không có câu trả lời nào phù hợp với bạn, có thể là do thiết bị đầu cuối bạn đang sử dụng không phải là thiết bị phù hợp / bạn node_modulesđược sử dụng bởi một bộ phận khác trong máy tính của bạn.

Trong trường hợp của tôi, tôi tiếp tục loay hoay giữa lỗi này (vượt quá kích thước ngăn xếp cuộc gọi tối đa) và sự kiện lỗi truy cập khi tôi thực hiện a sudo npm i.

Cách khắc phục là đóng IDE của tôi (đó là webstorm), chạy npm itrong một thiết bị đầu cuối cơ bản, và đó là nó.


Đóng trình chỉnh sửa đã sửa nó cho tôi. (Netbeans cho tôi)
Wim Pruiksma

2

Tôi không phải là người dùng Windows , vì vậy nếu là bạn, hãy thử kiểm tra nhận xét của Rene Knop .

Đối với người dùng Unix / OSX , tôi đã xóa tệp .npmrc gốc ~/.npmrc.
Trước khi bạn định dùng thử, vui lòng kiểm tra xem có gì cần thiết ở đó không, bạn có thể sử dụng lệnh này để đưa tất cả nội dung vào thiết bị đầu cuối của mình : cat ~/.npmrc.

Nếu bạn đã có một cái gì đó như:

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

để lưu một bản sao:

cp ~/.npmrc ~/.npmrc_copy

Bây giờ, hãy thử xóa nó (Hoạt động cho người dùng bash: Unix / Ubuntu / OSX ...):

rm -f ~/.npmrc

Điều này làm việc cho tôi.
Hy vọng điều này sẽ hữu ích cho những người khác.


2

Tôi đã giải quyết 100% tôi gặp vấn đề này với phiên bản gulp: 3.5.6.

Bạn nên dọn sạch gói-lock.js và sau đó chạy npm installvà nó hoạt động ở dạng



1

Tôi đã thử mọi cách để khắc phục vấn đề này trên máy Mac của mình. Tôi nghĩ vấn đề bắt đầu khi tôi đã tải xuống npm từ Node.js và sau đó cài đặt lại nó với Homebrew trong khi làm theo cùng với video Team Treehouse.

Đây là những gì tôi đã thử:

Từ 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*

Từ Làm cách nào để tôi gỡ cài đặt hoàn toàn Node.js và cài đặt lại từ đầu (Mac OS X)

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

Đây là những gì đã làm việc:

Cuối cùng, điều duy nhất hiệu quả với tôi là sao chép lại repo npm-reinstall từ GitHub đã loại bỏ hoàn toàn mọi thứ liên quan đến npm trên máy Mac của tôi.

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

Sau đó tôi đã phải cài đặt lại nút và npm từ Node.js.


1

Môi trường công ty của chúng tôi sử dụng Artifactorylàm sổ đăng ký mặc định cho các phụ thuộc NPM của chúng tôi và khi chạy, npm installnó mặc định là không hoạt động ... vì vậy, chỉ định thủ công sổ đăng ký npm chính thông qua npm install --registry https://registry.npmjs.orgvấn đề này cho tôi ...


1

Tôi đã phải đối mặt với cùng một lỗi, tôi đã cố gắng cài đặt jest vào một trong các gói trong một dự án monorepo.

Nếu bạn đang sử dụng Sợi + Learna để đóng gói một dự án monorepo, bạn sẽ phải điều hướng đến gói.json bên trong gói mục tiêu và sau đó chạy npm installhoặc npm install <package name>.


0

Tôi đã có vấn đề này và đó là do một bản nâng cấp của git thực thi của tôi. Tôi quay trở lại Git-2.21.0.rc1.windows.1-64-bit và thêm nó vào đường dẫn môi trường của tôi và nó đã khắc phục vấn đề của tôi.


0

Tôi đã thử mọi cách để khắc phục sự cố này trên máy tính Windows 7 của mình như

Cài đặt lại và xây dựng lại npm

Cuối cùng, tôi đã khắc phục sự cố cài đặt cấu hình nhỏ này bằng cách lãng phí cả ngày.

Làm thế nào tôi giải quyết vấn đề này

Xóa các cấu hình cụ thể cho dự án của tôi trong .npmrc toàn cầu tại vị trí như ổ đĩa: / Windows / Users /../. Npmrc


0

Một điều cuối cùng làm việc cho tôi trên Mac là nâng cấp từ nút 8.12 lên 10.x bằng NVM.

Tôi đã gỡ cài đặt tất cả các phiên bản khác của Node bằng NVM, sau đó cài đặt 10.x, sau đó chạy nvm alias default node, thông báo cho NVM luôn luôn mặc định là phiên bản nút có sẵn mới nhất trên vỏ.

Sau đó, vấn đề tải lại trực tiếp của tôi đã biến mất!


0

Chuyển sang sợi đã giải quyết vấn đề cho tôi.


0

Đối với những người gặp vấn đề này khi xây dựng hình ảnh Docker với Jenkins (hoặc bất kỳ CI nào), hãy đảm bảo rằng package-lock.jsonnó cũng được sao chép vào vùng chứa.

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

Đối với chúng tôi, quá trình cài đặt thực sự ổn, lỗi chỉ xảy ra khi chạy npm prune productioncho hình ảnh sản xuất.


Tôi gặp vấn đề này với npm prune và NODE_ENV không được đặt thành sản xuất. Đã giải quyết bằng cách xóa nút_modules và npm cài đặt lại
Eduardo

0

Nếu sổ đăng ký npm mặc định của bạn không phải là kho lưu trữ npm công khai (bạn có thể kiểm tra điều này bằng cách truy cập tệp .npmrc hoặc kiểm tra cấu hình npm của bạn thông qua các lệnh npm CLI), bạn có thể thử bỏ đặt cấu hình đăng ký để nó quay lại công khai kho npm. Sau đó chạynpm install lại.

Nếu bạn có các phụ thuộc không có sẵn trong kho npm công khai, hãy thử tạm thời xóa các phụ thuộc đó khỏi gói.json. Điều này sẽ cho phép bạn chạy npm install. Cuối cùng, hoàn nguyên các phụ thuộc và cấu hình đăng ký mà bạn đã xóa và chạy npm installlần cuối để cài đặt phần còn lại của các phụ thuộc.


0

Hôm nay chúng tôi đã gặp lỗi này khi chạy npm prunengay cả sau khi chạy npm cache clean --force.

Phiên bản:

node 13.8.0 
npm 6.13.6

Xóa các package-lock.jsoncông việc cho trường hợp này là tốt. Cảm ơn tất cả!


0

Tôi đã phải đối mặt với một lỗi tương tự. Tôi đã theo dõi nó đến thực tế là npm không thể xóa các tệp khỏi các thư mục .bin cho một thư mục npm link'd. Vì vậy, tôi đã đi vào và rm -rf tất cả các thư mục .bin từ thư mục npm link'd.

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

Điều đó đã giải quyết vấn đề.


0

Tôi đã gặp một vấn đề tương tự nhưng trong trường hợp của tôi, tôi đã sử dụng yarntừ đầu nhưng từ một số gói readme tôi đã sao chép npm installlệnh và gặp lỗi này. Sau đó nhận ra rằng đã yarn add <package-name>giải quyết vấn đề và gói đã được cài đặt.

Nó có thể giúp ai đó trong tương lai.


0

Các bước sau đã giúp tôi giải quyết vấn đề này:

  1. Dừng tất cả các dải phản ứng (ví dụ: bắt đầu xây dựng)
  2. chạy npm cache clean --force
  3. chạy npm install

0
echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

làm việc cho tôi trên Ubuntu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.