[英]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.