[英]Express module not found when installed with NPM
當我嘗試運行express創建的app.js
文件時,出現以下錯誤:
$ node app.js
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'express'
at Function._resolveFilename (module.js:320:11)
當我輸入express --version
我得到2.3.3
的返回語句。 我使用npm來安裝express。 我不得不使用這些說明手動創建npm:
git clone http://github.com/isaacs/npm.git
cd npm
sudo make install
錯誤是Error: Cannot find module 'express'
。
安裝npm和express后我是否需要做一些事情才能讓快遞看到由npm創建的模塊?
Express全局安裝。 我使用-g
標志來安裝它。
編輯:當我嘗試"node -e require.paths"
我得到:
[ '/home/user/.node_modules',
'/home/user/.node_libraries',
'/usr/local/lib/node' ]
因此,節點未檢測到npm安裝。 如何讓節點檢測npm安裝?
安裝快遞
npm install -g express
創建一個新的應用程序
express your_app
進入app目錄
cd your_app
使用npm鏈接來解析模塊
npm link express
對require()使用本地安裝,對命令行應用程序使用全局安裝。
如果您需要兩者,請使用npm link
命令。
在Ubuntu 12.04上,您必須將export NODE_PATH=/usr/local/lib/node_modules
到/.bashrc以使用全局安裝的模塊。
看來,雖然已更新npm以將全局模塊安裝到/usr/local/lib/node_modules
,但Node自己的require.paths
尚未反映此更改。
有兩種合理的解決方案:
將以下代碼添加到應用程序的頂部:
require.paths.push('/usr/local/lib/node_modules');
親:非侵入性,易於添加
Con:需要紀律,未來版本的節點將限制對require.paths
訪問
以root身份執行:
ln -s /usr/local/lib/node_modules /usr/local/lib/node
親:合理的非侵入性
Con:需要root,修改linux fs,可能無法在系統更新中存活
我有同樣的問題。 這雖然對我有用:
好像npm(現在?)將節點模塊安裝到/usr/local/lib/node_modules/
而不是/usr/local/lib/node/
我所做的只是將所有內容從node_modules復制到節點: sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/
現在它似乎對我sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/
。
希望這可以幫助你:-)
那么.bashrc或.bash_profile中的 NODE_PATH=/usr/local/lib/node_modules
呢? 我認為這是真正正確的方法。
設置NODE_PATH=NODE_HOME\\node_modules
。
我正在使用Windows 7,它工作正常。
require.paths
被刪除,請使用NODE_PATH
環境變量來代替。
如果您正在使用Windows,則可能會發生環境變量NODE_PATH
未設置,因此當您執行node fileName.js
,它將找不到庫。
檢查控制台上的變量,如果不存在,則創建它。 為它提供NODE_HOME\\node_modules
值,其中NODE_HOME
是您的節點安裝目錄。 這條路徑是npm install在下載時放置每個模塊的地方。
看起來最簡單的方法是從應用程序的文件夾中運行npm install
。 這告訴npm將所有內容掛鈎。
這是express <appname>
之后的最后一條指令:
...
dont forget to install dependencies:
$ cd <appname> && npm install
對於使用mac計算機表達的所有問題:
解決方案是:
向你的用戶chown
.npm文件夾:
sudo chown -R Webmaste /Users/webmaste/.npm/
在您的測試文件夾或文件夾中:
sudo npm install -g express@2.5.8
從您的實際位置調用快遞:
/usr/local/share/npm/bin/express
sudo cd . && npm install
最后:
node app
控制台中的最后一條消息應如下所示:
Express server listening on port 3000 in development mode
對於mac用戶
cd /usr/local/lib/node
sudo ln -s ../node_modules/* ./$1
我安裝了gulp
,當我在命令行中運行這個gulp
命令時,我得到了一個gulp: command not found
錯誤。 現在看來,它安裝gulp
在我的本地文件夾是/home/YOURUSERNAME/.node/lib/node_modules
,而不是在全球npm
文件夾。
您可以通過運行以下命令來檢查npm
根文件夾: npm root -g
,它返回我的個人目錄/home/YOURUSERNAME/.node/lib/node_modules
而不是預期的/usr/local/lib/node_modules
。
您可以通過運行npm config set prefix /usr/local
命令來解決此問題。
最后使用Linux一個好方法是使用命令: sudo apt-get install node-express
但是使用express 4我們必須使用express-generator來制作app骨架,用'npm install express-generator -g'安裝它,然后運行'express myapp'命令。 另見安裝快遞
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.