我在设置IIS 7,Windows Server 2008上使用iisnode和node.js 0.10.20运行的Node.js / Node-soap服务时遇到了一些问题。这个相同的设置,使用相同的代码,在内部的另一台服务器上运行,并且工作正常。 问题是没有记录设置过程,并且无法将其全部用于将其迁移到新服务器。我在Node和IISnode中都没有先验知识。
这是打印的错误消息:
iisnode在处理请求时遇到错误。
HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误您 正在接收此HTTP 200响应,因为 system.webServer/iisnode/@devErrorsEnabled配置设置为 '真正的'。
除了node.exe进程的stdout和stderr的日志之外, 考虑使用调试和ETW跟踪来进一步诊断 问题
node.exe进程生成的最后64k输出到stderr 如下所示:
应用程序抛出未捕获的异常并终止:错误: %1不是有效的Win32应用程序。
\ node_modules \皂\ node_modules \节点外籍\构建\推出\ node_expat.node
at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (<Path to application>\node_modules\soap\node_modules\node-expat\lib\node-expat.js:4:13) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17)
现在我在网上找到的,尝试但没有工作的内容如下:
从这Stack Overflow question我尝试了两件事:
将此部分添加到我的Node.js文件中。
<iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.jade" nodeProcessCommandLine="\program files\nodejs\node.exe"/>
创建了一个符号链接:
mklink /D "C:\Program Files (x86)\nodejs" "C:\Program Files\nodejs"
如果我尝试别的话会更新。
所有帮助将不胜感激。
更新1 :
我确保在IIS中设置了Enable32-Bit Applications = False.
,并修复了VS 2010 x64 redist
二进制文件
答案 0 :(得分:1)
此错误消息表明\ node_modules \ soap \ node_modules \ node-expat \ build \ Release \ node_expat.node的位数与IIS工作进程(w3wp.exe)的位数不匹配。由于您似乎使用64位工作进程运行IIS(启用32位应用程序== False),它可能表明node_expat.node是32位二进制文件?