2013-01-09 455 views
31

我正在瀏覽我的第一個node.js項目。我已經安裝了MongoDB中,有一個server.js文件,當我嘗試運行它,我得到這個錯誤node.js找不到模塊'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) 

我敢肯定我已經安裝的MongoDB,我是新來的UNIX從C#窗口來臨背景,但我認爲這是一個沒有正確配置的路徑?

+2

在項目目錄的根目錄中是否有'package.json'?它是否將'mongodb'列爲依賴項?你記得'npm install'嗎?該錯誤表示節點無法找到'mongodb'JavaScript包,而不是機器上的mongodb服務器。 –

回答

54

您正在收到的錯誤表明MongoDB的NPM軟件包未正確安裝。

此處的修復取決於您計劃如何利用NPM。 NPM包管理器有兩種不同的操作模式:本地和全局。

第一個(和默認)模式是「本地」。

如果轉到server.js的文件夾,您將看到一個名爲node_modules的子文件夾。在該文件夾下將是一個mongodb文件夾。如果該文件夾不存在,則mongodb模塊未安裝在該路徑上。

要更正此問題,請將cd複製到該文件夾​​並輸入npm install mongodb。過程完成後,您應該有node_modules/mongodb文件夾可用。

您還可以使用npm install -g mongodb來全局安裝MongoDB軟件包。如果您正在使用大量的node.js命令行工具,那麼這很有用,但如果您部署整個工具則用處不大。

旁註:周圍有package.json一個不斷髮展的標準。 package.json是包含給定模塊的所有依賴關係的標準方式。這允許您在項目/包的根目錄下運行npm updatenpm install,並有效地「引入」所有依賴關係。這極大地簡化了部署過程和保持依賴關係的過程。

+0

謝謝,錯誤是沒有在node_modules文件夾中安裝mongodb。 – Eddie

+35

值得一提的是,如果你在全球安裝它,你必須使用鏈接:'npm link mongodb' – meeDamian

+3

呃這是*非常*值得一提。謝謝切斯特,你解決了我的問題! – Locohost

50

嘗試了一段時間後沒有成功安裝(因爲我是mongo和node新手),我確實錯過了npm鏈接步驟。所以只是總結一下,我這樣做:

  1. NPM安裝MongoDB的-g
  2. CD /路徑/要/我的/應用程序/文件夾
  3. NPM鏈接MongoDB的

有了到位,我可以在我的應用程序文件中執行此操作:require('mongodb')。

這裏有一些參考,如果你需要他們:

+2

這也適用於我。 +1 –

+2

這是真正的答案。 – richb01

0

我是新來的MongoDB。花了幾個小時通過NPM安裝mongodb後,我終於得到了圖片。見,其實有三大 「的MongoDB」 你需要處理(我使用OSX):

1. 中使用的NodeJS司機: 即:VAR蒙戈=需要('在/ usr/local/lib目錄/ node_modules/mongodb的')。或者,您可以使用前面的帖子中提到的「npm link」,以避免漫長的路徑。命令「npm install -g mongodb」在/ usr/local/lib下安裝mongodb驅動程序(這就是「-g」的意思)。這傢伙花了幾個小時來安裝,不知道爲什麼,所以要耐心等待!

2. mongodb實用程序(即UNIX可執行命令)。你從http://www.mongodb.org/downloads下載它們。它包含允許您啓動mongodb數據庫的mongod命令。因此,在我的/ usr/local/bin中,我創建了一個符號鏈接mongod,指向/usr/local/lib/node_modules/mongodb-osx-x86_64-2.6.7/bin/mongod,因此我可以從任何位置執行mongod 。

3. /data/db指向的mongodb數據庫。所以在/ data下,我創建了一個符號鏈接db,指向/ Users/your_user_id/Database/mongodb(或者任何你喜歡放置它的地方),其中mongodb是一個可以通過mkdir創建的空目錄。

因爲你已經安裝了上面的#2 mongodb,所以你可以在命令行執行mongod,它將在mongodb#3下創建和啓動數據庫。

因爲您有nom安裝的mongodb#1,所以現在您可以在您的NodeJS程序中要求它。

工作完成!

0

我得到了同樣的問題,我解決了這些步驟。

1.Go到項目迪爾(CD你的項目路徑)

2.Run在命令行shell命令(安裝NPM)

3.Run您的項目(節點app.js例如)

4

這個問題可能是由下列原因之一造成的。

1)您還沒有安裝mongodb模塊。

2)您已經在全局環境中安裝了mongodb,但未鏈接到當前應用程序。

解決方案

1)運行到頂部的應用程序目錄,然後執行NPM安裝MongoDB的,這將安裝MongoDB的模塊,和你的項目會自動檢測到它。

2)執行NPM安裝mongodb的-g使用命令NPM鏈路的mongodb全局命令,然後安裝蒙戈DB模塊Ttaverse到應用頂層目錄和鏈接。

有用的鏈接

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

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

0

可能是你正在嘗試運行path.I都面臨着同樣的問題,得到了遵循如下幾個步驟解決其他然後項目。

1.)使用命令shell 「cd/project path」轉到您的項目目錄。

2.)現在運行您的項目。

0

我的問題是,當我最初創建我的package.json文件時,我使「版本」鍵對應的值爲「1.0.0」。當我將其更改爲版本值以反映我想在我的「依賴關係」鍵下使用的版本時,我擺脫了錯誤。下面是潛在修復的圖片。注意「dependencies」下的「version」和「mongodb」是如何匹配的。通過下面的步驟

1)安裝MongoDB的全球: - - : enter image description here

3

你可以做任何的兩件事情,使其運行

一)npm install mongodb -g

B)去您的應用程序目錄,其中module.js位於,然後運行

npm link mongodb

說明: - 當您通過npm全局安裝軟件包時,它會下載到全局node_module文件夾。對於我(Mac用戶),它位於/usr/local/lib/node_modules/mongodb。我們將其鏈接到您嘗試運行module.js的目錄。

2)另一種方法是在本地安裝的MongoDB,不通過

npm install mongodb

全球下列任一後,您將看到node_modules - 下「module.js> MongoDB的文件夾'目錄,這意味着mongodb已成功安裝。

0

錯誤

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) 

解決

NPM安裝MongoDB的

編輯的package.json = 「MongoDB的」: 「^ 3.0.1」,改變 「的MongoDB」 :「3.0.1」,