Azure NodeJS错误:%1不是有效的Win32应用程序。'

问题描述:

我正在尝试使用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中的这个问题。

根据您得到的错误消息,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

您是否重新启动了您的应用服务? –

感谢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位版本被提供。