修正windows下node-gyp编译时直接打开node-gyp.js而不是运行它

2015-5-21 10:56:51

最近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