Node-gyp构建错误Windows x64


69

到目前为止,这是我在x64操作系统上所做的事情:

  • 安装了Python(v2.7-特定于2.7.6),并将其添加到系统路径(C:\ Python27)
  • 已安装MS VS C ++ 2010 Express版本(我已经安装了VS 2012,但没有C ++组件)
  • 安装了Windows SDK 7.1的编译器更新
  • 成功执行node-gyp配置(从我的附加目录(位于binding.gyp所在的nodejs \ node_modules下))

  • 运行node-gyp build(以管理员身份)**这就是崩溃的原因,剩下的是:

这个错误:

C:\Program Files\nodejs\node_modules\msnodesql>node-gyp build
gyp info it worked if it ends with ok
gyp info using node-gyp@0.12.2
gyp info using node@0.10.25 | win32 | x64
gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
Building the projects in this solution one at a time. To enable parallel build, please add the   "/m" switch.

LINK:致命错误LNK1181:无法打开输入文件'kernel32.lib'[C:\ Program Files \ nodejs \ node_modules \ msnodesql \ build \ sqlserver.vcxproj]

gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Users\RNelson\AppData\Roaming\npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Users\\RNelson\\AppData\\Roaming\\npm\\node_modules\\node-      gyp\\bin\\node-gyp.js" "build"
gyp ERR! cwd C:\Program Files\nodejs\node_modules\msnodesql
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok

有什么想法吗?提前致谢!只是尝试将我的node-sqlserver MS驱动程序用于Node.js


您可以粘贴error.not不清楚的文本吗
Pradheep 2014年

@Dalorzo:我最终解决了这个问题!将很快在这里发布解决方案。这花费了很多工作,并且需要花费一些时间来发布详细信息。敬请关注。
Rachael 2014年

5
解决方案是...
后方服务台

@Rachael您的解决方案是什么?
Juntae 2015年

@Juntae,看到被接受。
拉切尔2015年

Answers:


37

npm config set msvs_version 2013 --global 我使用VS节点工具为我工作,并且每次执行npm安装时都不需要指定msvs_version。

我遇到一个问题,即npm的配置(c:\ Users \ username \ .npmrc)的条目msvs_version = 2012已过期。


5
真的很不错!我将再次尝试安装,以在我的机器上对其进行测试。看起来是这里问题的核心!也许您应该将其添加到npm页面上,该页面可以吸引最多的人?
Rachael 2014年

再次救了我一台新机器。
Rachael

晚会了,但是您能详细说明为何尽管安装了VS 2010还是成功将Visual Studio版本设置为2013?我想念什么?
勒克斯2015年

什么是.npmrc ... ??? 我在笔记本电脑上找不到一个...请帮助...;)
Maryadi Poipo

48

我有一个类似的问题。我发现此开关对我有帮助

--msvs_version=2012

例如

npm install --msvs_version=2012 <package>

2
我确认同样适用于VS 2013。取而代之的是使用--msvs_version=2013
朱利安·克里斯佩尔·萨姆塞尔

1
Visual Studio 2015不适用于我,但2013可以。这向我表明您需要安装Visual Studio的节点工具。github.com/Microsoft/nodejstools
redwards510

问题在于重建node-gyp-在这种情况下此开关如何应用?
2015年

18

花了一段时间使它生效(对我来说,可接受的答案不起作用,对我来说,这只是一半解决方案),我做了以下工作:

  1. 可悲的是,您必须拥有Visual Studio(我为DESKTOP安装了Express Edition 2013)

  2. 安装了python 2.7.3(您无需设置任何环境变量)

  3. 以管理员身份运行cmd并转到您的项目根目录(package.json文件在哪里)

  4. 第一次运行: npm config set python C:\Python27\python.exe

  5. 然后: npm install -msvs_version=2013

技巧是在命令中npm config set python ...path_to_python_exe...,它将由npm提供给依赖关系,我猜需要python。我不知道为什么将python设置为env变量还不够。


1
我希望这能有所作为:(
Jon Biz

@JonBiz,按照上述步骤操作会出现什么样的错误?
Srle 2014年

1
步骤4终于帮助了我!非常感谢!
EvAlex 2014年

@Kwoxer,我只是看了一下,而我恰好安装了Python 2.7.6。我会尝试使用该版本,而不是某些不兼容的旧版本?我确实将python目录添加到系统路径。
拉切尔2015年

2
谢谢。非常适合我的node-gyp问题。
hzane 2015年

11

如果以上所有方法均无效(我的情况是-Windows10 64bit

删除C:\ Users \ user_name \ .node-gyp

删除%AppData%/ npm

删除%AppData%/ npm-cache

并再次安装node-gyp

node-gyp页面上遵循以下说明

我选择了选项1 npm install --global --production Windows-build-tools


5
npm install --global --production windows-build-tools似乎是最快,最清晰的方法(也在Win10 x64上)
thybzi

我使用的是win10 64,这是解决问题的唯一方法。
张巴兹

7

用于在Windows或任何其他操作系统中安装node-gyp

首先,您可能必须通过以下方式下载node-gyp

$ npm install -g node-gyp-install

然后安装

$ npm install -g node-gyp

您可能需要以root / administrartor身份执行上述过程。


4

在2015年尝试安装Keystone时,我遇到了同样的错误,并且遇到了您告诉我的所有内容,但它本身并没有起作用。最后,我只需要运行命令

"C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\SetEnv.CMD" /Release /x64

在运行命令之前设置环境。(当将窗口文本变为绿色时,请不要惊慌,它可以正常工作)。所以,是的,我会按照互联网上任何地方建议的方式进行安装并设置环境变量,但请确保在运行任何其他命令之前先运行以上命令。它可能对您没有用,但希望对其他人有用。如果仍然不能解决问题,则MSVS 2010版对我有用,因此请安装该版本并在运行npm命令时使用标志-msvs_version = 2010。


如果您仍然有看到的错误消息,Angie将会很高兴!
拉切尔2015年

@Rachael是的!我会尽快给您回复!
Angie 2015年

嗯,现在我的node-gyp重建似乎挂在某个地方。我稍后必须回覆@Rachael抱歉:(
Angie

1

对我而言,与VS Express配合使用的解决方案是简单地为桌面安装Visual Studio 2013 Express(这是从2013版开始向您提供开发人员命令提示符的唯一工具)。打开开发人员命令提示符(提升),然后运行NPM安装命令。这不需要任何特殊的--msvs_version论据,它可以正常工作。



1

对我来说(Windows 7 64bit),

我在这个问题上苦苦挣扎了半天。终于成功了。

在我的路上

  1. 在控制面板上,我删除了所有Python,Microsoft Visual Studio,Microsoft Redistributable,并安装了一些有关此软件的工具。

  2. 窗口更新并重新启动。

  3. 安装了Python27Visual Studio 2013 (未设置env-val)

  4. npm install node-gyp -g

  5. 我也遇到同样的错误,但是之后npm config set msvs_version 2013 --global,它可以工作了。


0

我也遇到了类似的问题,这对我有用。

  • 删除了Python和Visual Studio
  • 通过“使用C ++进行桌面开发”安装了Python 27和Microsoft Visual Studio
  • 设置python路径 npm config set python /path/to/executable/python
  • npm install node-gyp -g
  • node-gyp configure --msvs_version=2013
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.