npm 安装失败,错误 C2373 与 vs2015 更新 3
Posted
技术标签:
【中文标题】npm 安装失败,错误 C2373 与 vs2015 更新 3【英文标题】:npm install fails with error C2373 with vs2015 update 3 【发布时间】:2016-11-04 02:43:03 【问题描述】:用 Windows 10 重新安装我的机器后,使用 Visual Studio 2015
设置它后,我在安装我的 git 存储库时遇到了这个错误:
→ npm install
在不同的项目中失败:
...
C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.c(34): error C2373: "__pfnDliNotifyHook2": [...]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Windows_NT 10.0.10586
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\...\node_modules\buffertools
gyp ERR! node -v v4.4.7
gyp ERR! node-gyp -v v3.3.1
gyp ERR! not ok
【问题讨论】:
【参考方案1】:此错误与npm
、node-gyp
和Visual Studio 2015
相关,并且已在node-gyp@3.4.0
中修复,但npm
仍指向旧版本。当我解决方法时,我可以提出这个建议:
转到安装 npm 的文件夹,例如:
C:\Program Files\nodejs\node_modules\npm
打开:package.json
在bundleDependencies
中删除node-gyp
的条目
在dependencies
中将node-gyp
的版本号添加到3.4.0
在该目录下创建npm i
安装node-gyp@3.4.0
解决问题
可以在这里找到与GitHub
相关的问题:
-
nodejs/node#7286
nodejs/node-gyp#956
npm/npm#13199
npm/npm#13200
【讨论】:
当您说“转储条目”时,您的意思是添加还是删除? 我没有删除它,但修复仍然有效。我还需要删除它吗?谢谢!您可能希望更改您的回复措辞,以使所有非英语母语人士和英语母语不精通的人受益。 这是为了完整性 请注意,在“普通”Windows 安装中,您需要 UAC 访问此文件,这可能需要使用“以管理员身份运行”选项启动编辑器和终端,否则您将不会能够保存文件或运行npm install
我还必须运行它才能使其正常工作:npm install -g rimraf
【参考方案2】:
或者更新 npm:
npm install npm -g
【讨论】:
虽然我喜欢这给我的新输出格式,但它并没有摆脱错误。【参考方案3】:另一个不涉及npm
安装的替代解决方案是运行
SET CL=-DDELAYIMP_INSECURE_WRITABLE_HOOKS %CL%
运行前npm install
【讨论】:
您是否在运行 npm install 之前在同一个命令提示符实例中发出 SET 命令? 是的,我在npm install
之前设置了CL变量,之后另一个问题是
感谢您的提示! (只需删除尾随的 %CL%)` SET CL=-DDELAYIMP_INSECURE_WRITABLE_HOOKS `
在 windows 上使用 git bash 我成功地使用了 export CL=-DDELAYIMP_INSECURE_WRITABLE_HOOKS
(虽然我的 ursa
构建仍然失败,但 windows 上的 node-gyp 很痛苦)以上是关于npm 安装失败,错误 C2373 与 vs2015 更新 3的主要内容,如果未能解决你的问题,请参考以下文章
error: C2373: “str”: 重定义;不同的类型修饰符
NG 构建在 Azure Pipelines 中失败,并出现 NPM 错误 134
npm install 错误 安装 chromedriver 失败的解决办法