2013-07-14 124 views
2

i'ms要安裝在內角項目的NodeJS和貓鼬我有這個錯誤錯誤MSB007 node.js的貓鼬

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和絞股藍皁苷。當我嘗試安裝socket.io我有同樣的問題...

回答

4

VS Express有沒有64位構建支持,所以你有幾個選擇這裏:

  • 安裝完整的試用版Visual Studio套件
  • 卸載64位的節點,並使用x86版本
  • 安裝Windows SDK

我個人推薦第二(win32的節點),因爲SDK安裝是t中的痛苦他回來了(主要是失敗,沒有錯誤信息,這可能是「壞」vcredist版本的標誌),而完整的Visual Studio並不便宜(而試用版並非永久性解決方案)。

1

32位節點報告bsonkerberos的警告。
我不明白爲什麼node-gyp甚至被解僱。我認爲本地軟件包是預先構建的,爲我的操作系統提供了二進制文件?
嗯,我想我想錯了。

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

> [email protected] 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 

> [email protected] 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 
+0

你有沒有解決這個問題?我現在有完全相同的問題。 :) – Marek

+0

我不想安裝* VisualStudio *,所以我用Ubuntu。類似的事情發生在Ubuntu中,但* node-gyp *無需任何額外的安裝即可成功構建它。 –

+0

這幫助我在Windows上獲得了不同的錯誤:https://groups.google.com/d/msg/node-mongodb-native/lz3-e1_WZP4/JJETYDDQrMUJ – Shoreline

1

確保您擁有所有必需的軟件運行node-gyp

,可以配置環境變量使用gyp的Visual Studio版本,這樣就可以避免每次進行npm安裝時必須設置--msvs_version=2012屬性。

例子:

  • 設置GYP_MSVS_VERSION=2012爲Visual Studio 2012
  • 設置GYP_MSVS_VERSION=2013e(在 'E' 代表 'Express版')

有關完整列表,請參閱 - https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294

對於NodeJS的Windows用戶來說,這仍然很痛苦,因爲它假定你有一個Visual Studio i的副本安裝和許多最終用戶將永遠不會有這個。因此,我正在向Joyent遊說,鼓勵他們將網絡套接字包含爲CORE節點的一部分,並且還可以將GNU gcc編譯器作爲NodeJS安裝的一部分發布,以便我們可以永久解決此問題。

隨意在添加您的投票: