node.js: không thể tìm thấy 'yêu cầu' mô-đun


92

Tôi đã cài đặt mô-đun yêu cầu và gặp lỗi:

module.js:340
    throw err;
          ^
Error: Cannot find module 'request'

Tôi đã đọc tất cả các bài đăng về lỗi này và hiểu rằng điều này là do các yêu cầu mô-đun không được tìm thấy trên toàn cầu, nhưng tôi đã thử 2 đề xuất

npm cài đặt yêu cầu -g

cái này có nên cài đặt nó trong / usr / loca / bin không? bởi vì tôi không thấy nó ở đó.

liên kết sudo npm

/ usr / local / lib / node_modules / request -> / Users / soulsonic / dev / sandbox / node_test / request

Tôi đã khởi động lại thiết bị đầu cuối sau mỗi lệnh, nhưng vẫn nhận được lỗi không thể tìm thấy mô-đun.

cập nhật

chắc hẳn đã có một số loại xung đột trong thư mục ban đầu của tôi, bởi vì "npm install request" không thêm "request" vào node_modules (có 10 cái khác trong đó) .. sau khi chuyển sang một thư mục mới, nó vừa hoạt động.

nếu tôi chạy nó với -g switch, tôi thấy nó được cài đặt vào / usr / local / lib / node_modules / request.

Có vẻ như tôi chỉ cần cập nhật hồ sơ của mình để đường dẫn trên được tự động thêm vào.

Câu trả lời:


171

Đi tới thư mục của dự án của bạn

mkdir TestProject
cd TestProject

Đặt thư mục này làm thư mục gốc của dự án của bạn (điều này sẽ tạo một package.jsontệp mặc định )

npm init --yes

Cài đặt mô-đun npm bắt buộc và lưu nó dưới dạng phụ thuộc dự án (nó sẽ xuất hiện trong package.json)

npm install request --save

Tạo một test.jstệp trong thư mục dự án với mã từ gói ví dụ

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body); // Print the google web page.
  }
});

Thư mục dự án của bạn sẽ trông như thế này

TestProject/
- node_modules/
- package.json
- test.js

Bây giờ chỉ cần chạy nút bên trong thư mục dự án của bạn

node test.js

1
vâng, đó chính xác là ví dụ mà tôi đã làm theo. và tôi chạy trình cài đặt npm 10 lần ngay bây giờ .. trong dự án thử nghiệm của tôi và sử dụng cờ -g. tôi có thể thấy node_modules trong thư mục thử nghiệm của mình, nhưng yêu cầu không có ở đó .. nó tiếp tục cho tôi lỗi đó ..
Sonic Soul

bởi vì mặc dù tôi đã có một số xung đột kỳ lạ, đây là những bước đúng đắn để làm theo. nó hoạt động sau khi tôi làm lại trong một thư mục mới. Tôi đã thêm một bản cập nhật về những gì đã xảy ra với tôi mà có lẽ sẽ hiếm với những người khác
Sonic Soul

32

Bạn chỉ cần cài đặt request cục bộ trong dự án của mình.

Chỉ cần cdvào thư mục chứa tệp js của bạn và chạy

npm install request

sau "yêu cầu cài đặt npm", tôi đã sao chép app.js của mình vào thư mục yêu cầu và thử chạy từ đó với kết quả tương tự. và tôi sẽ cần sử dụng nó từ nhiều hơn một dự án.
Sonic Soul

@SonicSoul: Bạn đang hiểu sai cách hoạt động của các gói nút. require('request')nhìn vào ./node_modules/request, và đó là nơi npm installđặt nó. Bạn nên chạy npm installtừ thư mục gốc của mỗi ứng dụng và không bao giờ được node_modulestự mình chạm vào thư mục.
SLaks

trước khi chạy npm install request, bạn nên chạy npm init. Làm theo lời nhắc sẽ tạo package.jsontrong thư mục dự án của bạn. Sau đó, chạy npm install -S requestsẽ cài đặt cả mô-đun yêu cầu vào thư mục node_modules cũng như thêm yêu cầu vào tệp package.json của bạn
Noah

@Laks làm điều đó có nghĩa là mỗi khi tôi cài đặt bất kỳ gói nào, tôi cần nhập vào thư mục gốc của nó và thực thi npm install? cho tất cả chúng?
Drumnbass

@Drumnbass: Không. Cũng npm installcài đặt tất cả các phụ thuộc.
SLaks

16

Tôi đã có cùng một vấn đề, vì tôi đã npm install request --save giải quyết được vấn đề. Hy vọng nó giúp.


1

Tôi đã gặp phải vấn đề tương tự, đây là cách tôi làm cho nó hoạt động ..

mở thiết bị đầu cuối:

mkdir testExpress
cd testExpress
npm install request

hoặc là

sudo npm install -g request // If you would like to globally install.

bây giờ không sử dụng

nút app.jshoặc nút test.js, bạn sẽ gặp phải vấn đề này khi làm như vậy. Bạn cũng có thể in sự cố đang gây ra bằng cách sử dụng lệnh này .."node -p app.js"

Lệnh trên để bắt đầu nodeJs đã không được dùng nữa. Thay vào đó sử dụng

npm start

Bạn nên xem thứ này..

testExpress@0.0.0 start /Users/{username}/testExpress
node ./bin/www

Mở trình duyệt web của bạn và kiểm tra localhost: 3000

Bạn sẽ thấy Cài đặt nhanh (Chào mừng bạn đến với Express)


1

Tôi đã gặp vấn đề tương tự khi cài đặt nó trên toàn cầu, sau đó tôi cố gắng cài đặt nó cục bộ và nó hoạt động.


1

nếu một số mô-đun bạn không thể tìm thấy, hãy thử với URI tĩnh, ví dụ:

var Mustache = require("/media/fabio/Datos/Express/2_required_a_module/node_modules/mustache/mustache.js");

Ví dụ này, chạy trên Ubuntu Gnome 16.04 64 bit, nút -v: v4.2.6, npm: 3.5.2 Tham khảo: Blog của Ben Nadel


0

ReferenceError: Không tìm thấy biến: yêu cầu.

Bạn đã cài đặt "npm", bạn có thể chạy script như bình thường tới "localhost" "127.0.0.1".

Khi bạn sử dụng http.clientRequest () với "tùy chọn" trong "npm", bạn cần cài đặt "RequestJS" bên trong mô-đun.

Mô-đun là bất kỳ tệp hoặc thư mục nào trong thư mục node_modules có thể được Node tải. Cài đặt "RequiereJS" để làm cho http.clientRequest (tùy chọn) hoạt động.


0

Tôi đã thử cài đặt mô-đun cục bộ với phiên bản và nó hoạt động !!

npm install request@^2.*

Cảm ơn.

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.