2013-01-09 29 views
31

Tôi đang thực hiện dự án node.js đầu tiên của mình. Tôi đã cài đặt MongoDB, có một tập tin server.js, và khi tôi cố gắng chạy nó tôi nhận được lỗi nàynode.js không thể tìm thấy mô-đun 'mongodb'

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'mongodb' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:362:17) 
    at require (module.js:378:17) 

tôi khá chắc chắn tôi đã MongoDB cài đặt, tôi mới để unix đến từ một C# cửa sổ nền, nhưng tôi nghĩ rằng đây là một con đường không được cấu hình đúng cách?

+2

Bạn có một 'package.json' trong thư mục gốc của thư mục dự án của bạn không? Liệu nó có 'mongodb' được liệt kê như là một phụ thuộc? Bạn có nhớ 'npm install' không? Lỗi đó nói rằng nút không thể tìm thấy gói JavaScript 'mongodb', không phải là máy chủ mongodb trên máy. –

Trả lời

54

Lỗi bạn đang nhận được cho biết rằng gói NPM cho MongoDB không được cài đặt đúng.

Sửa lỗi ở đây phụ thuộc vào cách bạn dự định tận dụng NPM. Trình quản lý gói NPM hoạt động có hai chế độ hoạt động khác nhau: cục bộ và toàn cục.

Chế độ đầu tiên (và mặc định) là "cục bộ".

Nếu bạn truy cập thư mục với server.js, bạn sẽ thấy một thư mục con có tên là node_modules. Dưới thư mục đó sẽ là một thư mục mongodb. Nếu thư mục đó không có, thì mô-đun mongodb không được cài đặt trên đường dẫn đó.

Để sửa lỗi này, cd vào thư mục đó và nhập npm install mongodb. Khi quá trình được thực hiện, bạn nên có sẵn thư mục node_modules/mongodb.

Bạn cũng có thể cài đặt gói MongoDB trên toàn cầu sử dụng npm install -g mongodb. Điều này rất hữu ích nếu bạn đang sử dụng rất nhiều công cụ dòng lệnh node.js, nhưng ít hữu ích hơn nếu bạn đang triển khai toàn bộ thứ.

Lưu ý bên: có tiêu chuẩn phát triển xung quanh package.json. package.json là một cách tiêu chuẩn hóa bao gồm tất cả các phụ thuộc cho một mô-đun nhất định. Điều này cho phép bạn chạy npm update hoặc npm install tại gốc của dự án/gói và thực sự "kéo" tất cả các phụ thuộc. Điều này giúp đơn giản hóa quá trình triển khai và quá trình giữ các phụ thuộc của bạn trực tuyến.

+0

cảm ơn, lỗi không được cài đặt mongodb trong thư mục node_modules. – Eddie

+35

Điều đáng nói đến là nếu bạn cài đặt nó trên toàn cầu, bạn phải liên kết nó bằng cách sử dụng: 'npm link mongodb' – meeDamian

+3

Uhhh yeah điều này là * rất nhiều * đáng nhắc đến. Cảm ơn bạn Chester, bạn đã khắc phục vấn đề của mình !! – Locohost

50

Sau khi thử một thời gian để cài đặt nó mà không thành công (vì tôi mới làm quen với mongo và nút), tôi đã bỏ lỡ bước liên kết npm. Vì vậy, chỉ để tóm tắt, tôi đã làm điều này:

  1. NPM cài đặt MongoDB -g
  2. cd/path/to/my/app/thư mục
  3. NPM liên kết MongoDB

Với ý nơi , Tôi có thể làm điều này trong tập tin ứng dụng của tôi: yêu cầu ('mongodb').

Dưới đây là một số tài liệu tham khảo, trong trường hợp bạn cần đến chúng:

+2

điều này cũng làm việc cho tôi. +1 –

+2

Đây là câu trả lời thực sự. – richb01

0

Tôi mới đến MongoDB. Sau khi dành hàng giờ cài đặt mongodb qua npm, cuối cùng tôi cũng có được bức ảnh.Hãy xem, thực sự có ba "mongodb" bạn cần xử lý (Tôi đang sử dụng OSX):

1. Trình điều khiển được sử dụng trong NodeJS: Đó là: var mongo = require ('/ usr/local/lib/node_modules/mongodb '). Hoặc, bạn có thể sử dụng "liên kết npm" như đã đề cập trong bài trước đó để tránh đường dẫn dài. Lệnh "npm install -g mongodb" cài đặt trình điều khiển mongodb trong/usr/local/lib (đây là ý nghĩa "-g"). Anh chàng này mất hàng giờ liền để cài đặt, không biết tại sao, vì vậy hãy kiên nhẫn!

2. Tiện ích mongodb (tức là các lệnh thực thi UNIX). Bạn tải xuống từ http://www.mongodb.org/downloads. Nó chứa lệnh mongod cho phép bạn khởi động cơ sở dữ liệu mongodb. Vì vậy, trong/usr/local/bin của tôi, tôi đã tạo một liên kết tượng trưng, ​​mongod, trỏ tới /usr/local/lib/node_modules/mongodb-osx-x86_64-2.6.7/bin/mongod, vì vậy tôi có thể thực thi mongod từ bất cứ đâu .

3. Cơ sở dữ liệu mongodb được trỏ bởi/data/db. Vì vậy, dưới/dữ liệu, tôi tạo ra một liên kết tượng trưng, ​​db, trỏ tới/Users/your_user_id/Database/mongodb (hoặc bất cứ nơi nào bạn muốn đặt nó), trong đó mongodb là một thư mục trống mà bạn có thể tạo thông qua mkdir.

Vì bạn đã cài đặt Mongodb # 2 ở trên, vì vậy bạn có thể thực thi mongod ở dòng lệnh, sẽ tạo và khởi động cơ sở dữ liệu theo mongodb # 3.

Vì bạn có mongodb # 1 được cài đặt bởi npm, vì vậy bây giờ bạn có thể yêu cầu nó trong chương trình NodeJS của bạn.

Hoàn thành công việc!

0

Tôi gặp vấn đề tương tự và tôi giải quyết bằng các bước này.

1.Go để Dir dự án của bạn. (Cd của bạn đường dẫn dự án)

2.Run lệnh này trong vỏ lệnh (cài đặt NPM)

3.Run dự án của bạn (nút app.js ví dụ)

4

Vấn đề này có thể do một trong các lý do dưới đây gây ra.

1) Bạn chưa cài đặt mô-đun mongodb.

2) Bạn đã cài đặt mongodb trong ngữ cảnh chung nhưng không được liên kết với ứng dụng hiện tại.

Giải pháp

1) Traverse vào thư mục ứng dụng và thực hiện NPM cài đặt MongoDB, điều này sẽ cài đặt mô-đun MongoDB, và dự án của bạn sẽ tự động phát hiện nó.

hay

2) Thực hiện NPM cài đặt MongoDB -g để cài đặt Mongo mô-đun DB trên toàn cầu và sau đó Ttaverse vào thư mục ứng dụng và liên kết sử dụng lệnh NPM liên kết MongoDB lệnh.

hữu ích Liên kết

http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

https://npmjs.org/doc/link.html

0

Có thể bạn đang cố gắng để chạy sau đó dự án khác path.I đã phải đối mặt với cùng một vấn đề và đã giải quyết bằng cách làm theo vài bước đưa ra dưới đây.

1.) Chuyển đến thư mục dự án của bạn bằng cách sử dụng lệnh shell "đường dẫn cd/dự án".

2.) Bây giờ, hãy chạy dự án của bạn.

0

Vấn đề của tôi là khi tôi tạo tệp package.json ban đầu, tôi đã tạo khóa "phiên bản" tương ứng với giá trị "1.0.0". Khi tôi thay đổi giá trị phiên bản đó để phản ánh phiên bản tôi muốn sử dụng trong khóa "phụ thuộc" của mình, tôi đã loại bỏ lỗi. Có một hình ảnh bên dưới của bản sửa lỗi tiềm năng. Lưu ý cách "phiên bản" và "mongodb" trong "phù hợp" phụ thuộc. enter image description here

3

Bạn có thể làm một trong hai điều cần làm cho nó chạy: -

1) Cài đặt MongoDB trên toàn cầu với các bước dưới đây: -

a) npm install mongodb -g

b) Tới thư mục ứng dụng của bạn, trong đó module.js được đặt và sau đó chạy

npm link mongodb

Giải thích: - Khi bạn cài đặt gói trên toàn cầu qua npm, nó sẽ được tải xuống thư mục node_module chung. Đối với tôi (người dùng Mac), dưới /usr/local/lib/node_modules/mongodb. Chúng tôi liên kết điều này với thư mục đó từ nơi bạn đang cố gắng chạy module.js.

2) cách tiếp cận khác là cài đặt MongoDB tại địa phương, không toàn cầu qua

npm install mongodb

Sau khi làm theo một trong hai trong số này, bạn sẽ được nhìn thấy node_modules -> Thư mục MongoDB dưới 'module.js 'thư mục, có nghĩa là mongodb đã được cài đặt thành công.

0

Lỗi

jamsheed-h110m-s2ph:~/project/jamsheed/meanStack/mean$ node server.js 
module.js:538 
    throw err; 
    ^
Error: Cannot find module 'mongodb' 
    at Function.Module._resolveFilename (module.js:536:15) 
    at Function.Module._load (module.js:466:25) 
    at Module.require (module.js:579:17) 
    at require (internal/module.js:11:18) 
    at Object.<anonymous> (/home/haseeb/project/jamsheed/meanStack/mean/server.js:3:13) 
    at Module._compile (module.js:635:30) 
    at Object.Module._extensions..js (module.js:646:10) 
    at Module.load (module.js:554:32) 
    at tryModuleLoad (module.js:497:12) 
    at Function.Module._load (module.js:489:3) 

Giải Quyết

NPM cài đặt MongoDB

Sửa package.json = "MongoDB": "^ 3.0.1", thay đổi "MongoDB" : "3.0.1",

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