在WebMatrix中运行节点应用程序时出错

我安装了WebMatrix并按照这些说明在我的Windows 7机器上安装了IIS 7。

当我点击“运行”运行我的快递节点的应用程序,浏览器popup并告诉我

iisnode模块无法启动node.exe进程。 确保node.exe可执行文件在web.config的system.webServer/iisnode/@nodeProcessCommandLine元素中指定的位置可用。 默认情况下,node.exe预计将安装在x86系统上的%ProgramFiles%\ nodejs文件夹和x64系统上的%ProgramFiles(x86)%\ nodejs文件夹中。

这是我的web.config:

<configuration> <system.webServer> <handlers> <!-- indicates that the app.js file is a node.js application to be handled by the iisnode module --> <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <!-- Don't interfere with requests for logs --> <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true"> <match url="^[a-zA-Z0-9_\-]+\.js\.logs\/\d+\.txt$" /> </rule> <!-- Don't interfere with requests for node-inspector debugging --> <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true"> <match url="^app.js\/debug[\/]?" /> </rule> <!-- First we consider whether the incoming URL matches a physical file in the /public folder --> <rule name="StaticContent"> <action type="Rewrite" url="public{REQUEST_URI}" /> </rule> <!-- All other URLs are mapped to the Node.js application entry point --> <rule name="DynamicContent"> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" /> </conditions> <action type="Rewrite" url="app.js" /> </rule> </rules> </rewrite> <!-- You can control how Node is hosted within IIS using the following options --> <!--<iisnode node_env="%node_env%" nodeProcessCountPerApplication="1" maxConcurrentRequestsPerProcess="1024" maxNamedPipeConnectionRetry="3" namedPipeConnectionRetryDelay="2000" maxNamedPipeConnectionPoolSize="512" maxNamedPipePooledConnectionAge="30000" asyncCompletionThreadCount="0" initialRequestBufferSize="4096" maxRequestBufferSize="65536" watchedFiles="*.js" uncFileChangesPollingInterval="5000" gracefulShutdownTimeout="60000" loggingEnabled="true" logDirectoryNameSuffix="logs" debuggingEnabled="true" debuggerPortRange="5058-6058" debuggerPathSegment="debug" maxLogFileSizeInKB="128" appendToExistingLog="false" logFileFlushInterval="5000" devErrorsEnabled="true" flushResponse="false" enableXFF="false" promoteServerVars="" />--> <iisnode nodeProcessCommandLine="&quot;%programfiles%\nodejs\node.exe&quot;" interceptor="&quot;%programfiles%\iisnode\interceptor.js&quot;" /> </system.webServer> </configuration> 

是什么原因导致这个问题,我该如何解决?

如果您已经从网站安装了x64版本的节点,这是一个常见的问题。 目前IISNode设置为从x32path读取node.exe。 您可以更改nodeProcessCommandLine以在您的盒子上使用node.exe的完整path,也可以安装32位节点安装。 我们正在努力解决这个问题,所以32/64位将开箱即用。 让我知道,如果这原来不是问题:)

与node.js(64位),请尝试将其放置在web.config的底部

 <iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.jade" nodeProcessCommandLine="\program files\nodejs\node.exe"/> 

您可以创build一个从32位path到64位path的符号链接,而不是安装32位版本。

cmd.exe提示符处:

 mklink /D "C:\Program Files (x86)\nodejs" "C:\Program Files\nodejs" 

令人惊讶的是,这仍然是不固定的, web.config设置似乎被忽略。