求大神Help,执行node-gyp configure报错
发布于 10 年前 作者 SFLAQiu 54015 次浏览 最后一次编辑是 8 年前 来自 问答

最近开始研究nodejs,想用nodejs做web,测试系统是win7,打算数据库用sqlserver,然后在网上搜索了下nodejs支持sqlserver 包的安装过程,执行到这一步就的时候就跪了。(感觉好麻烦,为了支持sqlserver 各种安装程序,执行命令,各种报错。这还怎么玩) 网上的步骤: 1.安装Node.js(官网上下载) 2.安装node-gyp(安装好node.js后进入到npm目录,执行npm install node-gyp) 3.安装python 2.7.x(WWW.PYTHON.ORG上可以下载,注意下载2.7.X版本) 4.安装Visual C++ 2010 (vs2010中必须有C++模块,也可以单独下载Microsoft) 5.安装SQL Server Native Client 11.0(http://www.microsoft.com/en-us/download/details.aspx?id=29065) 这些全部安装好后,就搭建好了生成msnodesql模块的环境,现在可以去官网的module上下载msnodesql模块了(注意利用npm intsall msnodesql也可以安装,但是我是win7 64执行这么命令总是不能正确安装,所以我手动下载了),下载时注意msnodesql的版本和node.js的版本对应。将下载好的msnodesql文件夹复制到node.js的node_modules路径下,然后生成步骤如下: 1.node-gyp configure (到这一步就跪了) 2.node-gyp build 或node-gyp build --debug(前者是release版)

C:\Users\John>node-gyp configure
gyp info it worked if it ends with ok
gyp info using node-gyp[@1](/user/1).0.2
gyp info using node[@0](/user/0).10.31 | win32 | x64
gyp info spawn python
gyp info spawn args [ 'C:\\Users\\John\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-G',
gyp info spawn args   'msvs_version=auto',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\John\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\John\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\John\\.node-gyp\\0.10.31\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\John\\.node-gyp\\0.10.31',
gyp info spawn args   '-Dmodule_root_dir=C:\\Users\\John',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'C:\\Users\\John\\build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: C:\Users\John) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (C:\Users\John\AppData\Roaming\npm\node_modules\node-gyp\lib\configure.js:343:16)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Users\\John\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "configure"
gyp ERR! cwd C:\Users\John
gyp ERR! node -v v0.10.31
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok
4 回复
C:\Users\John>npm install node-sqlserver
npm WARN deprecated node-sqlserver[@0](/user/0).1.0: This package has been superseded by msnodesql.
npm WARN engine node-sqlserver[@0](/user/0).1.0: wanted: {"node":"0.6"} (current: {"node":"0.10.31","npm":"1.4.23"})

> node-sqlserver[@0](/user/0).1.0 install C:\Users\John\node_modules\node-sqlserver
> node-gyp rebuild


C:\Users\John\node_modules\node-sqlserver>node "D:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
  Connection.cpp
  OdbcConnection.cpp
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Column.h(40): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Column.h(64): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\ResultSet.h(51): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
..\src\OdbcConnection.cpp(82): warning C4267: “参数”: 从“size_t”转换到“SQLSMALLINT”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
..\src\OdbcConnection.cpp(118): warning C4267: “参数”: 从“size_t”转换到“SQLINTEGER”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
..\src\OdbcConnection.cpp(384): warning C4244: “初始化”: 从“SQLLEN”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
..\src\OdbcConnection.cpp(386): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Operation.h(36): error C2664: “uv_queue_work”: 不能将参数 4 从“void (__cdecl *)(uv_work_t *)”转换为“uv_after_work_cb” [C:\Users\John\node_modules\node-sqlserver\build\s
qlserver.vcxpr
oj]
          在匹配目标类型的范围内没有具有该名称的函数
c:\users\john\node_modules\node-sqlserver\src\Column.h(40): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Column.h(64): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\ResultSet.h(51): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
  OdbcException.cpp
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xmemory(201): warning C4506: 内联函数“v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)”没有定义 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver
.vcxproj]
          with
          [
              T=v8::Object
          ]
  OdbcOperation.cpp
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Operation.h(36): error C2664: “uv_queue_work”: 不能将参数 4 从“void (__cdecl *)(uv_work_t *)”转换为“uv_after_work_cb” [C:\Users\John\node_modules\node-sqlserver\build\s
qlserver.vcxpr
oj]
          在匹配目标类型的范围内没有具有该名称的函数
c:\users\john\node_modules\node-sqlserver\src\Column.h(40): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Column.h(64): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\ResultSet.h(51): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
  ResultSet.cpp
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xstring(817): warning C4506: 内联函数“v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)”没有定义 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver
.vcxproj]
          with
          [
              T=v8::Object
          ]
  stdafx.cpp
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Column.h(40): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\Column.h(64): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
c:\users\john\node_modules\node-sqlserver\src\ResultSet.h(51): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
..\src\ResultSet.cpp(72): warning C4244: “参数”: 从“const SQLULEN”转换到“int32_t”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
..\src\ResultSet.cpp(72): warning C4244: “参数”: 从“const SQLULEN”转换到“int32_t”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xmemory(201): warning C4506: 内联函数“v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)”没有定义 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver
.vcxproj]
          with
          [
              T=v8::Object
          ]
  Utility.cpp
C:\Users\John\.node-gyp\0.10.31\deps\v8\include\v8.h(179): warning C4506: 内联函数“v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)”没有定义 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
          with
          [
              T=v8::Object
          ]
E:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
..\src\Utility.cpp(55): warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
C:\Users\John\.node-gyp\0.10.31\deps\v8\include\v8.h(179): warning C4506: 内联函数“v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)”没有定义 [C:\Users\John\node_modules\node-sqlserver\build\sqlserver.vcxproj]
          with
          [
              T=v8::Object
          ]
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 (D:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "D:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\John\node_modules\node-sqlserver
gyp ERR! node -v v0.10.31
gyp ERR! node-gyp -v v1.0.1
gyp ERR! not ok
npm ERR! node-sqlserver[@0](/user/0).1.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sqlserver[@0](/user/0).1.0 install script.
npm ERR! This is most likely a problem with the node-sqlserver package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls node-sqlserver
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "D:\\Program Files\\nodejs\\\\node.exe" "D:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-sqlserver"
npm ERR! cwd C:\Users\John
npm ERR! node -v v0.10.31
npm ERR! npm -v 1.4.23
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\John\npm-debug.log
npm ERR! not ok code 0

C:\Users\John>

还有这个错误

@SFLAQiu 楼主,请问你node-gyp configure报错解决了吗?

遇到同样问题快要奔溃,终于解决 首先删除 $HOME/.node-gyp rm -rf ~/.node-gyp

然后重新安装最新的 node-gyp 包 npm i node-gyp -g

然后移除直接安装但build失败的 nodemodules rm -rf ./project/node_modules

最后重新 npm i -d 就行

最初解决方案出自: https://github.com/nodejs/node-gyp/issues/809

回到顶部