2

我正在尝试在我的 nodeJS 项目上安装猫鼬,我有这个错误

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.InvalidPlatform
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.InvalidPlatform
.Targets(23,7): error MSB8007: The Platform for project 'kerberos.vcxproj' is i
.Targets(23,7): error MSB8007: The Platform for project 'bson.vcxproj' is inval
nvalid.  Platform='x64'. You may be seeing this message because you are trying
id.  Platform='x64'. You may be seeing this message because you are trying to b
to build a project without a solution file, and have specified a non-default Pl
uild a project without a solution file, and have specified a non-default Platfo
atform that doesn't exist for this project. [c:\testNodeMongoose\node_modules\m
rm that doesn't exist for this project. [c:\testNodeMongoose\node_modules\mongo
ongoose\node_modules\mongodb\node_modules\kerberos\build\kerberos.vcxproj]
ose\node_modules\mongodb\node_modules\bson\build\bson.vcxproj]

但我已经安装了 Python 和 Visual Studio 2010 Express 和 Gyp。当我尝试安装socket.io时,我遇到了同样的问题...

4

3 回答 3

4

VS Express 没有 x64 构建支持,所以你有几个选择:

  • 安装完整的 Visual Studio 套件的试用版
  • 卸载64位节点并使用x86版本
  • 安装 Windows SDK

我个人推荐第二个(win32 节点),因为 SDK 安装很麻烦(大多数情况下它失败且没有错误消息,这“可能”是“坏”vcredist 版本的标志),以及完整的 Visual Studio不是那么便宜(而试用不是永久解决方案)。

于 2013-08-07T18:36:39.323 回答
1

确保您拥有运行所需的所有软件node-gyp

您可以gyp通过环境变量配置所使用的 Visual Studio 版本,这样您就可以避免--msvs_version=2012每次执行 npm 安装时都必须设置该属性。

例子:

  • GYP_MSVS_VERSION=2012为 Visual Studio 2012设置
  • 设置GYP_MSVS_VERSION=2013e(“e”代表“特快版”)

有关完整列表,请参阅 - https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294

这对于 NodeJS 的 Windows 用户来说仍然很痛苦,因为它假定您安装了 Visual Studio 的副本,而许多最终用户永远不会拥有它。因此,我正在游说 Joyent 鼓励他们将 Web 套接字作为 CORE 节点的一部分,并可能将 GNU gcc 编译器作为 NodeJS 安装的一部分,这样我们就可以永久解决这个问题。

欢迎在以下位置添加您的投票:

于 2014-08-01T01:45:59.510 回答
1

32 位节点报告bson和的警告kerberos
我不明白为什么node-gyp甚至被解雇。我认为本机软件包是预先构建的,带有适用于我的操作系统的二进制文件?
嗯,我想我想错了。

...
npm http 304 https://registry.npmjs.org/bson/0.2.2
npm http 304 https://registry.npmjs.org/kerberos/0.0.3

> kerberos@0.0.3 install D:\mbo\repos\mean-mbo\node_modules\mongodb\node_modules\kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)


D:\mbo\repos\mean-mbo\node_modules\mongodb\node_modules\kerberos>node "C:\Program Files (x86)\nodejs
\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild

> bson@0.2.2 install D:\mbo\repos\mean-mbo\node_modules\mongodb\node_modules\bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)


D:\mbo\repos\mean-mbo\node_modules\mongodb\node_modules\bson>node "C:\Program Files (x86)\nodejs\nod
e_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
  kerberos.cc
  worker.cc
  security_credentials.cc
  security_buffer.cc
  bson.cc
C:\Users\mbo\.node-gyp\0.10.18\deps\v8\include\v8.h(184): warning C4506: no definition for inline
 function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)' [D:\mbo\repos\mean-mbo\node_mod
ules\mongodb\node_modules\kerberos\build\kerberos.vcxproj]
          with
          [
              T=v8::Object
          ]
C:\Users\mbo\.node-gyp\0.10.18\deps\v8\include\v8.h(184): warning C4506: no definition for inline
 function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)' [D:\mbo\repos\mean-mbo\node_mod
ules\mongodb\node_modules\kerberos\build\kerberos.vcxproj]
          with
          [
              T=v8::FunctionTemplate
          ]
C:\Users\mbo\.node-gyp\0.10.18\deps\v8\include\v8.h(179): warning C4506: no definition for inline
 function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)' [D:\mbo\repos\mean-mbo\node_mod
ules\mongodb\node_modules\kerberos\build\kerberos.vcxproj]
          with
          [
              T=v8::Object
          ]
  security_buffer_descriptor.cc
  security_context.cc
于 2013-09-29T11:07:52.037 回答