2017-09-20 85 views
0

我正在嘗試使用Azure製作NodeJS App服務。但是,它似乎是節點模塊 - nodehun - 我試圖使用干擾編譯過程。Azure NodeJS錯誤:%1不是有效的Win32應用程序。'

見錯誤:

\\?\D:\home\site\wwwroot\node_modules\nodehun\build\Release\nodehun.node 
    at Error (native) 
    at Object.Module._extensions..node (module.js:597:18) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (D:\home\site\wwwroot\server.js:6:15) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
Wed Sep 20 2017 16:18:27 GMT+0000 (Coordinated Universal Time): Application has thrown an uncaught exception and is terminated: 
Error: %1 is not a valid Win32 application. 

位搜索後,這可以通過node.exe的32位/ 64位體系結構和內置模塊之間的不匹配引起的。雖然,我不確定如何解決Azure中的這個問題。

回答

1

根據您得到的錯誤消息,nodehun似乎需要64位node.js運行時。默認情況下,Azure應用服務沒有安裝64位node.exe。你想要做的是地方的64位node.exe在d:\home\site\wwwroot\runtime,然後創建一個包含以下內容的iisnode.yml什麼解決方法:

nodeProcessCommandLine: "D:\home\site\wwwroot\runtime\node.exe" 

之後完成後,不要忘記重新啓動應用程序服務。更多細節請參考bcrypt not a valid win 32 application on azure app service

+0

iisnode.yml不存在,所以我只是在根目錄下創建它。我需要在配置文件中的任何位置定義它嗎? – Daniel

+0

我添加了一個64位版本的節點到wwwroot \ runtime \並添加了iisnode.yml,但我仍然收到相同的錯誤。 – Daniel

+0

您是否重新啓動了您的應用服務? –

0

感謝Aaron Chen指引我朝着正確的方向前進。

在Azure Web應用程序中,有一個Web.config文件。在這個文件中有一個iisnode部,這是我加入nodeProcessCommandLine到,e.g:

<iisnode watchedFiles="web.config;*.js" nodeProcessCommandLine="D:\home\site\wwwroot\runtime\node.exe"/> 

這解決上述錯誤,並運行節點作爲64位,提供節點的64位版本被提供。

相關問題