在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}"
希望这对其他人和未来的我有所帮助。我仍然建议浏览上面的项目符号列表以进行干净的故障排除。