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。
答
感谢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位版本被提供。
iisnode.yml不存在,所以我只是在根目录下创建它。我需要在配置文件中的任何位置定义它吗? – Daniel
我添加了一个64位版本的节点到wwwroot \ runtime \并添加了iisnode.yml,但我仍然收到相同的错误。 – Daniel
您是否重新启动了您的应用服务? –