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

时间:2017-09-20 16:20:59

标签: node.js azure

我正在尝试使用Azure制作NodeJS App服务。但是,似乎节点模块 - nodehun - 我试图使用它干扰编译过程。

见错误:

\\?\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 / 64bit架构与内置模块不匹配引起的。虽然,我不知道如何解决Azure中的这个问题。

2 个答案:

答案 0 :(得分:1)

根据您收到的错误消息,似乎nodehun需要64位node.js运行时。默认情况下,Azure App Service未安装64位node.exe。您想要做的解决方法是在d:\home\site\wwwroot\runtime中放置64位node.exe,然后使用以下内容创建iisnode.yml

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

完成此操作后,请不要忘记重新启动App Service。更多详情,请参阅bcrypt not a valid win 32 application on azure app service

答案 1 :(得分:0)

感谢Aaron Chen指出我正确的方向。

在Azure Web应用程序中,有一个Web.config文件。在这个文件中有一个iisnode部分,我在其中添加了nodeProcessCommandLine,例如:

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

如果提供了64位版本的节点,则会修复上述错误并将节点作为64位运行。