簡體   English   中英

使用NPM安裝時找不到Express模塊

[英]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創建的模塊?

  • 我的節點是版本:0.4.6
  • 我的快遞是版本:2.3.3
  • 我的npm是版本:1.0.6

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尚未反映此更改。

有兩種合理的解決方案:

  1. 將以下代碼添加到應用程序的頂部:

     require.paths.push('/usr/local/lib/node_modules'); 
    • 親:非侵入性,易於添加

    • Con:需要紀律,未來版本的節點限制對require.paths訪問

  2. 以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計算機表達的所有問題:

解決方案是:

  1. 向你的用戶chown .npm文件夾:

     sudo chown -R Webmaste /Users/webmaste/.npm/ 
  2. 在您的測試文件夾或文件夾中:

     sudo npm install -g express@2.5.8 
  3. 從您的實際位置調用快遞:

     /usr/local/share/npm/bin/express 
  4. sudo cd . && npm install

  5. 最后:

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM