2012-05-06 31 views
6

Tôi bắt đầu phát triển với node.j, tôi gặp một vấn đề liên quan đến việc sử dụng mô-đun 'ghê gớm'.Không thể tìm thấy mô-đun ghê gớm - Node.js

Tôi có lỗi này:

Error: Cannot find module 'formidable'

Dưới đây là danh sách module cài đặt bằng 'ls NPM cài đặt':

 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│  ├── [email protected] 
│  ├── [email protected] 
│  └── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
└─┬ [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    └─┬ [email protected] 
    ├─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── [email protected] 
    │ └── [email protected] 
    └── [email protected] 

tôi thêm rằng đó là mô-đun duy nhất tạo ra lỗi này.

Ngoài ra, tôi không thực sự hiểu cách đóng gói một số mô-đun, có vẻ như npm đang cài đặt mô-đun trực tiếp trong thư mục Tôi đang sử dụng lệnh cài đặt mô-đun và tôi nhận thấy rằng sự ghê gớm đã được cài đặt trong Express/connect/module trong lần cài đặt đầu tiên.

Bạn có thể cho tôi biết thêm thông tin về cây cài đặt mô-đun không.
Thank cho bài trả lời của bạn

Cheers

+1

Đừng hoảng sợ! Hãy bình tĩnh, suy nghĩ xem bạn đã nhìn thấy ở đâu cuối cùng có thể hiểu được Node.js _... :) – gdoron

+0

Chúng ta có thể vui lòng xem mã nơi bạn cố gắng yêu cầu ghê gớm không? Nếu không, chúng tôi có thể làm bất cứ điều gì để giúp bạn ... – Hubro

+0

Tôi đang gọi yêu cầu của các mô-đun ngay từ đầu tệp tin.js của tôi, tôi đang sử dụng lệnh gọi này: var formidable = require ("formidable") ; – bengo

Trả lời

3

Để hiểu độ phân giải mô-đun, có một cái nhìn tại Modules documentation, đặc biệt là Loading from node_modules Folders.

For example, if the file at '/home/ry/projects/foo.js' called require('bar.js') , then node would look in the following locations, in this order:

  • /home/ry/projects/node_modules/bar.js
  • /home/ry/node_modules/bar.js
  • /home/node_modules/bar.js
  • /node_modules/bar.js

NPM lợi dụng điều này bằng cách cài đặt các module vào:

./node_modules/{module} 

Vì vậy, khi bạn sử dụng npm install formidable, nó sẽ tạo ra và cài đặt các module vào:

./node_modules/formidable 

Nhưng, điều này có nghĩa là chỉ các tập lệnh trong thư mục hiện tại, bao gồm các thư mục con, sẽ thành công khi sử dụng require('formidable'):

./foo.js 
./lib/bar.js 
./src/baz.js 
./src/sub/qux.js 

Tuy nhiên bạn có thể cài đặt mô-đun như "toàn cầu", nhưng bạn phải tự hỏi một cách rõ ràng cho nó với -g hoặc --global:

npm install -g formidable 

Sau đó, bất kỳ kịch bản trên hệ thống sẽ có thể require('formidable').


Đối với sản lượng cây, bạn hiện có 5 module được cài đặt sẵn từ thư mục hiện hành:

  • express
  • formidable
  • node-inspector
  • npm
  • socket.io

Mọi thứ khác trong cây là danh sách các phụ thuộc của các mô-đun này và phụ thuộc của mô-đun, v.v., nhưng chỉ 5 sẵn có này cho require(...) trong tập lệnh của bạn.

+0

Cảm ơn bạn đã thông tin, rất hữu ích – bengo

5

Câu trả lời được chấp nhận trông rất toàn diện và chính xác, nhưng điều này đã làm việc cho tôi:

npm install -d 

d là viết tắt của phụ thuộc (tôi nghĩ)

+0

+1 nó đã giúp tôi _C: \ Users \ yash \ AppData \ Roaming \ npm-cache \ selenium-webdriver \ 2.47.0 \ package \ example_ 'ctrl + shift + mở cửa sổ lệnh tại đây 'sau đó được sử dụng' npm install -d', nó đã cài đặt tất cả các phụ thuộc rồi chạy một ví dụ 'node google_search.js' – Yash

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