Windows上的node-gyp 5:找不到npmode_modulesode-gyp\binode-gyp.



在Windows 10 v1903上运行npm 6.11.3,node-gyp 5.0.3,VS2019,收到此错误:

Cannot find module %AppData%npmnode_modulesnode-gypbinnode-gyp.js(其中%AppData%扩展到实际的用户特定路径(。

仅当通过 npm 调用构建时,才会发生错误,即:

npm run build

package.json文件scripts部分:

"scripts": {
...
"build": "node-gyp build",
}

如果在 npm 上下文之外手动调用node-gyp build则错误将消失。

如何摆脱错误并仍然使用npm脚本进行构建?

想通了。

在 Windows 5 构建系统上升级到 node-gyp 5 后,我开始出现臭名昭著的Error: Cannot find module ... npmnode_modulesnode-gypbinnode-gyp.js,这是由于 npm 将node_modulesnpm-lifecyclenode-gyp-bin推到我的PATH之上引起的,完全如此处所述。

我发现并尝试的现有补救措施都无法为我解决此问题,包括安装最新的windows-build-tools。这正是我尝试过的,按以下顺序排列:

  • 手动清理系统PATH和用户PATH环境变量中的混乱和重复项
  • 重新启动
  • choco unistall nodejs
  • rd /s %AppData%npm
  • rd /s %AppData%npm
  • choco install nodejs
  • npm install -g npm@latest
  • npm install -g node-gyp@latest
  • npm install -g typescript@latest

我仍然收到missing node-gyp.js错误。真正有帮助的是正确设置npm config set node_gyp指向正确的node-gyp.js,正如这里所建议的。然而,不知何故,该线程中的脚本对我来说无法正常工作(以及我尝试过的其他一些 PowerShell/Batch 脚本(。

最终,我想出了以下PowerShell 6单行代码,它为我提供了

诀窍:
pwsh -Command npm config set node_gyp "`u{22}$(Join-Path $(npm root -g) -ChildPath 'node-gypbinnode-gyp.js')`u{22}"

希望这对其他人和未来的我有所帮助。我仍然建议浏览上面的项目符号列表以进行干净的故障排除。

最新更新