[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,
執行後直接安裝完成~
執行 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 次)