2013-12-17 56 views
2

我試圖在Windows 7(64位)機器上安裝phantomjs-node模塊。在安裝「弱」模塊時似乎有node-gyp重建錯誤。node-gyp重建失敗,同時在windows 7上安裝「弱」模塊for phantomjs

我跟着node-gyp windows installation steps並確保我安裝了python並且它的路徑設置正確。

我也有visual C++和node-gyp所需的其他需求。可悲的是我無法修復node-gyp重建錯誤。

我有以下安裝

  • 節點 - 0.8.14(64位)
  • 蟒 - 2.7.3(64位)
  • 的Microsoft Visual C++ 2010(64位,還安裝了32位爲了以防萬一,因爲64位並沒有幫助)
  • 的Visual Studio 2010(專業版)和Visual Studio 2012(快遞,Web和桌面)
  • 的Windows SDK 7.1

在安裝模塊我不斷收到的錯誤是:

C:\ Program Files文件(x86)的\的MSBuild \ Microsoft.Cpp \ V4.0 \ Microsoft.Cpp.InvalidPlatform.Targets( 23,7):錯誤MSB8007:項目'weakref.vcxproj'的平臺無效。平臺=「64」。您可能會看到此消息,因爲您正在嘗試構建沒有解決方案文件的項目,並且指定了此項目不存在的非默認平臺。

我被困在上面的問題,嘗試所有的鏈接,並已正確安裝所有節點gyp要求。非常感謝。

回答

1

經過多次試驗,我能夠解決這個問題。

我重新安裝了windows sdk 7.1,這次我改變了安裝sdk的默認路徑。早些時候,SDK默認情況下是越來越安裝到

C:\ Program Files文件\微軟的SDK \的Windows \ V7.1

但後安裝完成時,我用C看:\ Program Files文件\微軟SDKs,我找不到任何Windows SDK,因爲它已安裝在C:\ Program Files(x86)\ Microsoft SDKs \ Windows文件夾中。所以,當重新安裝windows sdk時,我已經將指向C:\ Program Files \ Microsoft SDK的默認路徑更改爲C:\ Program Files(x86)\ Microsoft SDKs,並且有所幫助。

在重新安裝windows sdk之前,請確保卸載所有已安裝的visual C++版本。

弱模塊已安裝,但有警告,但沒有引起任何問題,但。希望這可以幫助。

2

嘗試重新安裝Windows SDK,它應該解決這個問題。

3

這些解決方案都沒有工作,或有太多的未知數,所以我需要一個更簡單的解決方案。我所做的是使用方法https://github.com/sgentle/phantomjs-node頁面,在那裏說

dnodeOpts property could help you to control dnode settings, so you could disable weak by setting it false to avoid that complicated installations. 

var phantom = require('phantom'); 

phantom.create(function (ph) { 
    ph.createPage(function (page) { 
    /* the page actions */ 
    }); 
}, { 
    dnodeOpts: { 
    weak: false 
    } 
}); 

因此建議上,假設你使用的是Windows(否則你可能就沒有這個問題在所有),只需設置dnodeOpts到假,如上所示,然後結束phantom.create函數。例如,如果您使用起動碼:

phantom.create(function (ph) { 
    ph.createPage(function (page) { 
     page.open("http://www.google.com", function (status) { 
      console.log("opened google? ", status); 
      page.evaluate(function() { return document.title; }, function (result) { 
      console.log('Page title is ' + result); 
      ph.exit(); 
      }); 
     }); 
    }); 
}, { 
    dnodeOpts: { 
     weak: false 
    }   
});