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】:

此错误与npmnode-gypVisual 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”: 重定义;不同的类型修饰符

npm 安装失败,npm 错误!无效的 json 响应

NG 构建在 Azure Pipelines 中失败,并出现 NPM 错误 134

npm install 错误 安装 chromedriver 失败的解决办法

npm 错误!尝试安装 package.json 时 git dep 准备失败

web3 npm 安装失败