最近npm需要编译的地方总是会直接打开node-gyp.js,而不是运行它。
看了一下命令行
if not defined npm_config_node_gyp (node "C:\Users\伟航.bangbang93-dev\AppData\Roaming\npm\node_modules\cnpm\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (C:\Users\伟航.bangbang93-dev\AppData\Roaming\n pm\node_modules\cnpm\node_modules\pangyp\bin\node-gyp.js rebuild )
发现else里没有"node"而是直接写了文件名,于是只要把nodejs安装目录下的\node_modules\npm\bin\node-gyp-bin\node-gyp.cmd改成
if not defined npm_config_node_gyp ( node "%~dp0\..\..\node_modules\node-gyp\bin\node-gyp.js" %* ) else ( node %npm_config_node_gyp% %* )
如果使用cnpm,则还有\AppData\Roaming\npm\node_modules\cnpm\node_modules\npm\bin\node-gyp-bin目录下的node-gyp.cmd需要修改
该问题已经在新版npm中修复
https://github.com/npm/npm/commit/9bcf5730bd0316f210dafea898afe9103849cea9