簡體   English   中英

npm 不會安裝 express?

[英]npm will not install express?

我目前安裝了 node.js 版本 0.8.8 和 npm 1.1.59。

每當我運行:

$ npm install -g express

我得到這個回報:

npm ERR! Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock'
npm ERR!  { [Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/devinandrews/.npm/64a534c1-express.lock' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.1.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "express"
npm ERR! cwd /Users/devinandrews
npm ERR! node -v v0.8.8
npm ERR! npm -v 1.1.59
npm ERR! path /Users/devinandrews/.npm/64a534c1-express.lock
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/devinandrews/npm-debug.log
npm ERR! not ok code 0

我現在正在拔頭發試圖弄清楚這一點。

更新:

我跑了

$ npm -g ls

查看我的 npm 在全球安裝了什么:

/usr/local/lib
├─┬ express@3.0.0rc4
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.4
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── fresh@0.1.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├── range-parser@0.0.4
│ └─┬ send@0.0.4
│   └── mime@1.2.6
└─┬ npm@1.1.59
  ├── abbrev@1.0.3
  ├── ansi@0.1.2
  ├── archy@0.0.2
  ├── block-stream@0.0.6
  ├── chownr@0.0.1
  ├── couch-login@0.1.10
  ├── fstream@0.1.18
  ├─┬ fstream-npm@0.1.1
  │ └── fstream-ignore@0.0.5
  ├── glob@3.1.12
  ├── graceful-fs@1.1.10
  ├── inherits@1.0.0
  ├── ini@1.0.4
  ├─┬ init-package-json@0.0.5
  │ └── promzard@0.2.0
  ├── lockfile@0.2.1
  ├── lru-cache@2.0.1
  ├── minimatch@0.2.6
  ├── mkdirp@0.3.4
  ├── node-gyp@0.6.7
  ├── nopt@2.0.0
  ├── npm-registry-client@0.2.6
  ├─┬ npmconf@0.0.11
  │ └─┬ config-chain@1.1.1
  │   └── proto-list@1.2.2
  ├── npmlog@0.0.2
  ├── once@1.1.1
  ├── osenv@0.0.3
  ├─┬ read@1.0.4
  │ └── mute-stream@0.0.3
  ├── read-installed@0.0.2
  ├── read-package-json@0.1.4
  ├── request@2.9.203
  ├── retry@0.6.0
  ├── rimraf@2.0.2
  ├── semver@1.0.14
  ├── slide@1.1.3
  ├── tar@0.1.13
  ├── uid-number@0.0.3
  └── which@1.0.5

但如果我跑:

$ npm ls

它返回空?

我遇到了同樣的問題,並且npm cache clear沒有修復它。 這個問題是因為你家目錄中的.npm目錄是用 root 權限創建的。 您運行的第一個 npm 命令很可能是sudo npm -g ,現在您正在嘗試將npm install在本地目錄中。

要解決:

  • sudo chown -R yourusername ~/.npm
  • 這可能不是必需的,但我也必須rmdir ~/tmp

在此之后,來自 package.json 的npm install應該可以工作。

運行npm cache clean並嘗試再次安裝

我遇到了同樣的問題,這個問題是因為你的主目錄中的 .npm 目錄是用 root 權限創建的。

采用 :

$sudo npm install -g express

解決辦法是:

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

sudo chown -R Webmaste /Users/webmaste/.npm/

2 - 在您的測試文件夾或您的文件夾中:

sudo npm install -g express@2.5.8

3 - 從您的實際位置調用 express:

/usr/local/share/npm/bin/express

4 -

sudo cd . && npm install

5 - 最后:

node app

控制台中的最終消息應如下所示:

Express server listening on port 3000 in development mode

如果您看不出使用 sudo npm install -g package_name有什么問題。 並且在輸入密碼時遇到問題,您可以隨時將自己添加到 sudoers 文件或npm可執行文件所屬的同一組中。

因此,要將自己添加到 sudoers 以進行 npm 編輯/etc/sudoers將這樣的內容添加到文件的底部:

your_username  localhost=/usr/local/bin/npm

如果您需要更多詳細信息, 這里是有關如何實現這一目標的分步指南。

在我的情況下,不是 ~/.npm 目錄由 root 擁有,而是 ~/tmp,我沒想到要檢查它,直到其中一條錯誤消息最終讓我找到。 修復過程非常簡單,因為它是一個 tmp 目錄,我們可以將它吹走,然后從您擁有的一個重新開始。

sudo rmdir ~/tmp
mkdir ~/tmp

以管理員身份運行 powershell,然后輸入:

Set-ExecutionPolicy RemoteSigned

然后再次嘗試安裝。

附帶說明一下,如果您的其他解決方案沒有幫助,我也遇到了同樣的問題並意識到出了什么問題——這可能是這里的興趣所在。

當我在本地安裝 express 時,我在另一個項目上運行了 nodemon。 檢查您沒有在另一個項目上運行 express 並嘗試在新項目上安裝 express。 只是提醒一下,希望它有所幫助。 順便說一句,剛剛從包文件中復制了依賴項,並粘貼到我的新項目中並運行 npm install 並檢查,express 已安裝。

轉到 C:\\Users\\User_Name\\AppData\\Roaming\\npm-cache_logs 並刪除所有文件

然后再次運行:

npm install

或者你重新安裝 Nodejs 並勾選Chocolatey

您可以安裝舊版本的 Nodejs 以與您正在構建的組件版本兼容https://nodejs.org/en/download/releases/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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