我最近將npm更新爲v5.0.1(來自4的最後一個版本),並且它一直是災難性的。在NPM v5.0.1升級後找不到模塊'fs.realpath'
無論如何,我堅持在這一點上。任何Node.js應用程式我嘗試運行完成的「故宮安裝」很好,但是當開始輸出:
module.js:471
throw err;
^
Error: Cannot find module 'fs.realpath'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/user/back/node_modules/glob/glob.js:44:10)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
注意這個相同的應用程序將運行在MacOS很好,但在Ubuntu 16.04.2 LTS它給人的以上錯誤。
我已經刪除了兩臺機器上的node_modules目錄並重新運行,macOs正常工作,Ubuntu失敗。
node -v: v6.10.3
...對於兩臺機器。
npm -v: 5.0.1
這也表明我看看日誌(/home/user/.npm/_logs/2017-06-02T23_19_59_859Z-debug.log
),但它提供了資料就更少。這裏的報道存在錯誤:
13 info lifecycle [email protected]~start: Failed to exec start script
14 verbose stack Error: [email protected] start: `tsc && npm run moveassets && NODE_ENV=production forever start -a -l back.log -e back-err.log ./build/www.js `
14 verbose stack Exit status 1
14 verbose stack at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:283:16)
14 verbose stack at emitTwo (events.js:106:13)
14 verbose stack at EventEmitter.emit (events.js:191:7)
14 verbose stack at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack at emitTwo (events.js:106:13)
14 verbose stack at ChildProcess.emit (events.js:191:7)
14 verbose stack at maybeClose (internal/child_process.js:886:16)
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
注意,直到NPM的致命升級到V5.0.1,它在兩臺機器上運行良好。
有問題的更新隔離:
看來它不是操作系統版本,但事實上,Mac系統正在生成程序包lock.json文件和Ubuntu是消費它,它的基礎是從安裝。如下所述,如果你刪除文件和rm -r node_modules
文件夾,你可以安裝,它會一切正常(但顯然,你不會得到版本鎖定的好處)。
我認爲這只是當前版本NPM的一個錯誤。很公平,這是一個很大的變化,完成後會是一個很好的功能。
你嘗試過做一個'NPM緩存clean'? – Joe
heh - 在NPM v5.0.1中運行。它會告訴你,緩存現在是完美的,你永遠不需要再次清理它。我已經看到,這是不正確的。你仍然可以通過'npm cache clean --force'來實現,這沒有幫助。 如果你還沒有升級到v5.0.1,我建議不要這樣做。查看GitHub上的問題列表。它不是很好。 – WillyC