[Mac] npm 出現奇怪的 Cannot find module 'npmlog' 錯誤?

[Mac] npm 出現奇怪的 Cannot find module 'npmlog' 錯誤?

今天執行 brew update 更新 Homebrew 之後,突然發現 npm 出問題了:

testuser@localhost ~ $ npm
module.js:442
throw err;
^
Error: Cannot find module 'npmlog'
at Function.Module._resolveFilename (module.js:440:15)
at Function.Module._load (module.js:388:25)
at Module.require (module.js:468:17)
at require (internal/module.js:20:19)
at /usr/local/lib/node_modules/npm/bin/npm-cli.js:20:13
at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:76:3)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)

 

在網路上搜尋了一下,似乎 Homebrew 在管理 node/npm 上有一些問題,

雖然 Fixing npm On Mac OS X for Homebrew Users 這篇有提到,

可以用 Homebrew 安裝不含 npm 版本的 node,再自己去裝 npm,

不過總覺得有點怪,比較同意部分網友的意見,npm 自己已經是套件管理員,

讓 npm 管理自己比讓 Homebrew 管理它要好,

因此決定讓 npm 離開 Homebrew 的管理範圍囉~

 

1. 將 node/npm 從 Homebrew 中移除

這邊要記得用 sudo,不然 Homebrew 沒有足夠權限去移掉 node 的東西:

sudo rm -rf /usr/local/lib/node_modules
sudo brew uninstall node

 

2. 安裝 Node.js

到 Node.js 官網下載給 Mac OS X 用的安裝檔,我抓的是 node-v6.2.1.pkg

執行後直接安裝完成~

Screen Shot 2016-06-06 at 12.04.25 PM  

 

執行 npm 沒有問題,不再出現一開始那怪異的 exception…

不過執行 npm update -g 卻出現新的錯誤:

testuser@localhost ~ $ npm update -g
npm ERR! addLocal Could not install /private/var/folders/js/5ts24yrs1s707kyfmjxjpkk00000gn/T/npm.18060/package

 

真是搞不懂怎麼回事… 找了一下,npm outdated -g produces error 這篇有個解法,

就是執行 npm install -g npm@latest:

testuser@localhost ~ $ npm install -g npm@latest
/Users/testuser/.npm-packages/bin/npm -> /Users/testuser/.npm-packages/lib/node_modules/npm/bin/npm-cli.js
/Users/testuser/.npm-packages/lib
└── npm@3.9.5

 

理論上我的 node/npm 已經是官網最新的了,但上面的命令執行之後,

似乎修復了什麼東西,執行 npm update -g 不再出現錯誤囉~^^

 

(本頁面已被瀏覽過 1,338 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料