2016-01-21 109 views
5

我試圖爲node.js安裝xml2json軟件包,但它給了我錯誤。使用node.js安裝xml2json時出錯

錯誤情況如下:enter image description here

我的系統配置情況如下:

Node.js的版本 - V5.4.1

NPM版本 - 3.3.12

工作系統 - windows 10 64位

python - 2.7.11(set as environment variabl e)

安裝微軟窗口sdk v7.1後,它給我下面的錯誤。

enter image description here

後下方錯誤添加的package.json中給出。

enter image description here

+0

XML2JSON僅僅是Windows中的[node-expat](https://www.npmjs.com/package/node-expat)的包裝,所以你必須先安裝它? – adeneo

+0

在嘗試安裝npm install node-expat時,它給了我與上面相同的錯誤 –

+0

似乎與.NET框架有關,我假設你有這個,否則你可以從Microsoft免費下載它。此外,這是一個看起來相關的expat拉 - > https://github.com/node-xmpp/node-expat/issues/57 – adeneo

回答

1

我相信你需要設置VCTargetsPath環境變量。

看看this question的答案,有幾種不同的方法。

通過做這樣的事情的命令行設置它可能是最簡單的方法:

set VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120" 

的確切路徑將取決於您已安裝的Visual Studio版本。

+0

它通過cmd設置VCTargetsPah後給出了與上面相同的錯誤。 –

+0

你能告訴我你用來設置VCTargetsPath的命令,以及目錄的內容嗎? – sheltond

+0

直接在cmd中設置VCTargetsPath。我在D:/ drive中執行上面的命令。 –

2

您必須在使用msbuild(由node-gyp rebuild觸發)構建時明確指定平臺工具集。嘗試下面的命令,之前運行npm

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\Setenv.cmd" /Release /x64 

的下面傳遞的參數見意,從SetEnv.cmd Usage

/新聞稿 - 創建一個發佈配置構建環境

/64 - 創建64 bit x64 applications

其他解釋

npm install xml2json需要使用Windows SDK引擎蓋下建設項目,同時安裝包,用MSBuild。您遇到過您的Windows SDK配置與node不兼容的情況。

Configuring the Windows SDK Command Prompt Window部分:

如果您還沒有Visual Studio 2010中,則可以使用Windows SDK命令提示符窗口和SETENV實用程序來配置你的應用程序建立的設置。

所以我的建議是使用SETENV工具來解決您的問題...

其他方法來解決問題

的MSBuild使用VCTargetsPath財產,不能定位,因爲註冊表缺少這個關鍵。

重點檢查是否存在,是否指向正確的路徑

  1. 啓動註冊表編輯器導航到 HKLM \ SOFTWARE \微軟\的MSBuild \ ToolsVersions \ WinSDKVersion
  2. 檢查VCTargetsPath關鍵。該值應爲 「$(MSBuildExtensionsPath64)\ Microsoft.Cpp \ WinSDKVersion \」

如果鍵不存在,或有錯誤的價值,解決問題通過下面的步驟:

  1. 啓動註冊表編輯器導航到 HKLM \ SOFTWARE \微軟\的MSBuild \ ToolsVersions \ WinSDKVersion
  2. 添加字符串鍵VCTargetsPath關鍵
  3. 設定值 「$(MSBuildExtensionsPath64)\ Microsoft.Cpp \ WinSDKVersion \」

WinSDKVersion == V4.0(貌似這是你的WinSDK版本的值),所以更換WinSDKVersionv4.0

+0

中不可用您可以詳細說明您的答案! –

+0

當然,@KevalTrivedi我的建議是否適合您? –

+0

我不知道。因爲我沒有得到你的答案。其實我是node.js中的新手,所以給我一個關於你的答案的簡單概念。 –