2013-08-23 30 views
107

Đây là tôi package.json cho các mô-đun mà tôi bao gồm trong dự án cha mẹ:NPM không cài đặt mô-đun phụ thuộc

{ 
    "version": "0.0.1", 
    "name": "module-name", 
    "dependencies": { 
    "express": "3.3.4", 
    "grunt": "0.4.1", 
    "grunt-contrib-compass": "0.4.0", 
    "grunt-contrib-copy": "0.4.1", 
    "grunt-contrib-cssmin": "0.4.1", 
    "grunt-contrib-jshint": "0.6.3", 
    "grunt-contrib-requirejs": "0.4.1", 
    "grunt-contrib-uglify": "0.2.2", 
    "grunt-contrib-watch": "0.5.1", 
    "grunt-express-server": "0.4.1", 
    "grunt-karma": "0.4.5", 
    "grunt-regex-replace": "0.2.5", 
    "request": "2.25.0" 
    }, 
    "scripts": { 
    "postinstall": "grunt install" 
    } 
} 

Một điều cần lưu ý là module này được chứa trong một repo tin và tôi bao gồm nó trong các phụ huynh package.json như: "module-name": "git+ssh://[email protected]:user/module-name.git"

+0

Package.json của bạn trông ok, cũng như dòng bạn sử dụng để bao gồm nó. Bạn có nhận được một thông báo lỗi? Là git trên con đường của bạn? – poida

+0

Tôi không nhận được lỗi trên sa, mô-đun cài đặt nhưng tập lệnh 'postinstall' của tôi không thành công vì các gói' grunt' cục bộ không được tìm thấy vì chúng không được cài đặt bởi NPM –

+1

Vấn đề này vẫn tồn tại trong tháng 11 năm 2016. Tôi đã cài đặt sạch của mô-đun đang hoạt động trên máy tính mới. @ Mohsen của câu trả lời cố định nó. –

Trả lời

108

Dường như bạn đã nhấn một lỗi đã tồn tại trong một thời gian và chưa có giải pháp. Có một số vấn đề mở đối với trường hợp này trong kho NPM:

Trong đầu tiên một người liệt kê một số cách giải quyết mà bạn có thể thử.

Một giải pháp thay thế có thể là (một chút hackish) để liệt kê rõ ràng các phụ thuộc là người phụ thuộc cấp đầu tiên. Điều này đòi hỏi bạn phải duy trì danh sách nhưng thực tế nó phải được thực hiện rất thường xuyên.

+9

Điều cần biết không chỉ là tôi, có một số điểm! –

+1

Nó vẫn không cho tôi. –

+0

@ Flame2057 thật tuyệt khi biết bạn đang gặp may, mặc dù không quá nhiều thông tin. Bạn có thể tiếp tục và xây dựng một câu hỏi, hy vọng cộng đồng có kiến ​​thức để giải quyết. Chúc vui vẻ! – allprog

3

Bạn có thể cần phải cài đặt các grunt-cli, hãy thử điều này trước khi thực hiện một NPM cài đặt:

sudo npm install -g grunt-cli 

Điều đó sửa chữa các grunt không thoát cho tôi, bạn cũng sẽ cần một tập tin grunt hợp lệ.

Nguồn: https://stackoverflow.com/a/16456467/241294

+0

Hmm đó là tất cả: http://pastebin.com/pZAcSQwi –

+0

Điều gì sẽ xảy ra khi bạn thử lệnh 'grunt' tại dấu nhắc lệnh của bạn? Liệu nó tồn tại trên con đường của bạn? Bạn nói đúng, nó trông giống như nó được cài đặt từ pastebin của bạn. Bạn đã cài đặt nó với sudo và -g? – poida

+0

Nó không phải là vấn đề với grunt: '~ ᐅ mà grunt /opt/local/bin/grunt' –

10

tôi nghi ngờ bạn đang phải đối mặt với vấn đề mà tập tin package.json của bạn không nằm trong cùng thư mục với Gruntfile.js của bạn. Khi bạn chạy grunt xxx lệnh của bạn, bạn nhận được lỗi tin nhắn như:

Local Npm module "xxx" not found. Is it installed? 

Còn bây giờ, giải pháp là:

  • Tạo package.json trong cùng thư mục với Gruntfile.js
  • Xác định các mô-đun được yêu cầu bởi dự án grunt của bạn
  • Thực hiện npm install để tải chúng cục bộ
  • Bây giờ, lệnh grunt cần thiết sẽ hoạt động.

IMHO, rất tiếc là chúng tôi không thể có mô-đun giải quyết grunt được tải từ mô-đun npm chính (ví dụ: package.json trong thư mục mẹ trong cùng một dự án). Các cuộc thảo luận here dường như chỉ ra rằng nó đã được thực hiện để tránh tải "toàn cầu" mô-đun nhưng tôi nghĩ rằng những gì chúng tôi muốn là tải từ "dự án của tôi" mô-đun thay thế.

+0

Vì vậy, đây là cấu trúc của dự án cha mẹ của tôi (đó là một trong những nhập khẩu các dự án mô-đun phụ): http://cl.ly/image/020E0b3I0t1A và cấu trúc của dự án mô-đun phụ của tôi: http://cl.ly/image/2q0L3l1v0s40; bạn có thể thấy cả hai chứa 'Gruntfile.js' và cả hai chứa' package.json' trên cùng một mức. –

+0

Đây không phải là vấn đề với 'grunt', đó là vấn đề với' npm' không đệ quy cài đặt phụ thuộc vào dự án mô-đun phụ của tôi. –

94

Tôi gặp sự cố rất giống nhau, xóa toàn bộ thư mục node_modules và cài đặt lại đã hoạt động cho tôi. Đã học được mẹo này từ chương trình IT Crowd!

rm -rf node_modules 
npm install 
+0

Điều này thực sự làm việc cho tôi. Tôi nghĩ điều đó thật kỳ lạ - điều gì gây ra sự trục trặc đó? Bất kể, nếu tôi xóa thư mục và chạy lại npm install, thì nó hoạt động. Trước đó, không có gì sẽ cài đặt trong thư mục con đó. Bây giờ, tất cả đều được cài đặt ở đó. – CtheGood

+0

Cảm ơn @Moshen. Tôi đã xóa một phiên bản cũ của Node và đã cài đặt sạch. Tôi đã xóa tất cả các node_modules của mình/trên toàn cầu nhưng quên xóa sau đó khỏi một số ứng dụng hiện có. Tôi đã phải xóa thư mục node_modules trong mỗi thư mục của ứng dụng hiện có, sau đó chạy 'npm install'. – wilblack

+0

Cũ tốt "bạn đã thử khởi động lại từ phương pháp _scratch_ chưa?". Nó hiệu quả tuyệt vời đối với tôi. –

2

Tôi đã nhận được lỗi này khi cài đặt môi trường phát triển Node sạch trên cửa sổ.

Để sửa lỗi này, tôi đã đi vào thư mục dự án mới của tôi (mà tôi chỉ scaffolded với yo angular) và gõ vào hai lệnh:

npm install -g grunt --save-dev

Đó sẽ cài đặt các phụ thuộc grunt địa phương để dự án của bạn. Tiếp theo:

npm install

Điều đó sẽ đảm bảo tất cả các bạn (mới) phụ thuộc dự án được cài đặt.

Tada!

3

Chỉ trong trường hợp ai đó đang gặp tình trạng khó khăn này và xảy ra để làm cho cùng một sai lầm asanine mà tôi đã làm, đây là những gì nó đã được trong trường hợp của tôi. Sau khi đập đầu tôi vào tường trong một giờ, tôi nhận ra rằng tôi đã bị giam giữ một cách không chính xác, và "phụ thuộc" chính nằm bên trong "kho chứa" chính.
Không cần phải nói, không có lỗi nào hiển nhiên và không có mô-đun nào được cài đặt.

13

nếu bạn kế thừa mã này, có thể là các phụ thuộc và phiên bản đã bị khóa và bạn có tệp ./npm-shrinkwrap.json.

nếu phụ thuộc của bạn không được liệt kê trong tệp đó, nó sẽ không bao giờ được cài đặt với lệnh npm install.

bạn sẽ cần phải cài đặt thủ công các gói và sau đó chạy npm shrinkwrap để cập nhật tệp shrinkwrap.

+2

Tôi gặp sự cố khi cài đặt thủ công gói đã tạo tệp 'package-lock.json' sau khi cập nhật lên nút 8.0.0 và npm 5.0.0. Sau đó, chạy 'npm install' sẽ chỉ cài đặt một gói thay vì tất cả các phụ thuộc của tôi. Xóa 'package-lock.json' và chạy lại' npm install' đã giải quyết được vấn đề cho tôi. – Monkpit

+1

@Monkpit Điều đó đã giải quyết nó cho tôi, cảm ơn! 'package-lock.json' đang cản trở. – VirtualWolf

6

OP có thể đúng đối với phiên bản cũ của nút. Tuy nhiên, tôi cũng phải đối mặt với nút 4.4.1.

Rất tốt có thể được liên kết với phiên bản nút bạn đang sử dụng. Hãy thử nâng cấp lên phiên bản mới nhất. Một số phụ thuộc nhất định không tải quá tải nếu chúng không tương thích với phiên bản nút.

Tôi tìm thấy điều này bằng cách chạy npm update.

Sau khi nâng cấp lên phiên bản mới nhất (4.4 -> 5.9); điều này đã được sửa.

+2

Điều này làm việc cho tôi 'npm update'. Cảm ơn!!!! – mike123

0

Tôi gặp vấn đề tương tự. Nhưng trên cùng một máy, một dự án có package.json tốt, nơi tất cả các phụ thuộc của tôi được cài đặt thành công. Và trong một dự án khác, phụ thuộc package.json của tôi không được cài đặt bất kể tôi làm gì. Tôi vừa sao chép package.json và dán vào một dự án khác. Va no đa hoạt động! Sự khác biệt tôi đã tìm thấy chỉ là dòng trống ở đầu tệp. Không biết hoặc nó ảnh hưởng đến bất cứ điều gì, có thể một số vấn đề khác. Nhưng vấn đề chỉ là tệp package.json.

9

Tôi đang sử dụng máy cửa sổ.

  1. Tôi đã xóa thư mục node_modules.
  2. Bằng cách nào đó, tệp package.lock.json đang được tạo. Tôi đã xóa tệp đó.
  3. Sau đó, cài đặt npm.
  4. Xây dựng sạch sẽ.
  5. Chạy.
+2

Câu trả lời này cần phải có thêm tình yêu.Tệp package.lock.json đã vặn tôi. – mwilcox

0

Trong trường hợp của tôi, nó đã giúp xóa node_modulespackage-lock.json.

Sau đó, chỉ cần cài đặt lại mọi thứ với npm install.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Khi bạn có đủ [danh tiếng] (https://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bất kỳ bài đăng nào] (https://stackoverflow.com/help/privileges/comment); thay vào đó, [cung cấp câu trả lời không yêu cầu làm rõ từ người hỏi] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-thay thế). - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/18613478) –

Các vấn đề liên quan