2014-01-10 112 views
18

我越來越想使用任何全局模塊時發生錯誤, 爲例:的NodeJS找不到模塊

Error: Cannot find module 'express' 
    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) 
    at Object.<anonymous> (C:\BitNami\wappstack\...\test\app.js) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.runMain (module.js:492:10) 

我安裝了明確的命令:

npm install -g express 

我app.js:

var express = require('express'); 

並使用Windows PowerShell或node.js命令提示符窗口運行它:

node app.js 

真的不知道發生了什麼問題,我讀了一些關於windows環境變量的東西,這可以嗎?

解決/更新

的問題是:Windows環境變量沒有配置爲NPM文件夾。 搜索您的npm文件夾並在環境變量中添加路徑。

+1

這種情況也發生在我身上,我在Linux上工作。大概全局安裝可以幫助你通過命令行從任意點運行'express'。如果您在您的項目目錄中運行'npm install',並且在您的依賴項中有'express',則它將起作用。 – hgoebl

+0

是的,但我打算做一套我經常在各種應用中使用的模塊,那麼在全球安裝這將是一個好主意。 –

+1

如果您想節省磁盤空間,您可以創建一個指向全局安裝模塊的鏈接。 – hgoebl

回答

14

你應該在本地安裝快捷:

npm install express 

然後要求它像你一樣:

var express = require('express') 
+6

我很難看到這個答案是什麼,並不是重複了OP在他已經做過的問題中所說的話。 –

+5

我也很困惑,爲什麼這是「接受」的答案,當OP明確表示他做了一些不同的事情並解決了這個問題。 –

+1

在本地安裝哪裏?防爆。/home/user中/項目? –

3

我在Linux下工作,但是當我需要快遞,我與它安裝在那裏的相對路徑這樣做,它工作正常:

var express = require('./public/node_modules/express'); 

我相信同樣的事情也可以使用Windows路徑。如果你想更加明確並且聲明一條絕對路徑,那麼這將是核心選項,以確保你始終確切地知道你的模塊在哪裏被加載,而不管你的腳本從哪裏運行。

如果在使用顯式路徑後仍然存在問題,我不知道問題可能是什麼。 。 。

11

剛剛從這裏引述:

https://www.npmjs.org/doc/files/npm-folders.html

  • 安裝它本地如果你打算要求()它。
  • 安裝它全球如果你打算在命令行上運行它。
  • 如果您需要兩者,請在兩處安裝,或使用npm鏈接
+1

寧願使用命令1)'npm install-locally somenodemodule'和2)另一個命令'npm install-global-for-command-line somenodemodule'或者其他的命令?只是個人偏好,但我喜歡它長時間可讀的清晰和多汁! –

+0

這完全解決了我遇到的問題。我只是安裝了一個用於'require'的庫,我想我通常會在我的系統中快速使用,因爲沒有特定的腳本或項目。我已經在全球安裝了該庫,然後將其本地鏈接到我的工作目錄中以便快速使用。我'可能'瞭解他們的範例,但是大多數人仍然希望能夠在全球範圍內輕鬆應對。 – Pysis

11

我正上的Windows7/X64同樣的錯誤,並在環境變量中增加以下解決了這個問題:

NODE_PATH=C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules 

*替換[用戶名]與您的實際系統的用戶名

+3

替代方案> set NODE_PATH =%USERPROFILE%\ AppData \ Roaming \ npm \ node_modules –

+3

第二種選擇:set NODE_PATH =%AppData%\ npm \ node_modules – Shivan