6

WebMatrix をインストールし、次の手順に従って Windows 7 マシンに IIS 7 をインストールしました。

[実行] をクリックしてエクスプレス ノード アプリを実行すると、ブラウザがポップアップして通知します

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>

この問題の原因と解決方法を教えてください。

4

3 に答える 3

21

node.js(64ビット)では、これをweb.configの一番下に配置してみてください

<iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.jade" 
nodeProcessCommandLine="\program files\nodejs\node.exe"/>
于 2012-11-15T13:30:02.193 に答える
10

これは、Web サイトからノードの x64 バージョンをインストールした場合によくある問題です。現在、IISNode は x32 パスから node.exe を読み取るように設定されています。nodeProcessCommandLine を変更して、ボックスの node.exe へのフル パスを使用するか、32 ビット ノード インストールをインストールすることができます。32 ビットと 64 ビットの両方がすぐに使えるように、この問題の修正に取り組んでいます。これが問題ではないことが判明した場合はお知らせください:)

于 2012-10-26T04:11:35.543 に答える
6

32 ビット バージョンをインストールする代わりに、32 ビット パスから 64 ビット バージョンへのシンボリック リンクを作成できます。

cmd.exeプロンプトで:

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

これがまだ修正されておらず、web.config設定が無視されているように見えるのは驚くべきことです。

于 2012-12-24T04:15:48.807 に答える