2012-10-26 7 views
6

Ho installato WebMatrix e ho seguito le istruzioni these per installare IIS 7 sul mio computer Windows 7.Errore durante l'esecuzione dell'app nodo in WebMatrix

Quando clicco 'Run' di eseguire il mio espresso nodo app, il browser si apre e mi dice

The iisnode module is unable to start the node.exe process. Make sure the node.exe executable is available at the location specified in the system.webServer/iisnode/@nodeProcessCommandLine element of web.config. By default node.exe is expected to be installed in %ProgramFiles%\nodejs folder on x86 systems and %ProgramFiles(x86)%\nodejs folder on x64 systems.

Ecco il mio 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> 

cosa sta causando questo problema e come lo risolvo?

risposta

10

Questo è un problema comune se è stata installata la versione x64 del nodo dal sito Web. Attualmente IISNode è impostato per leggere node.exe dal percorso x32. È possibile modificare nodeProcessCommandLine per utilizzare il percorso completo su node.exe sulla propria casella o installare l'installazione del nodo a 32 bit. Stiamo lavorando per risolvere il problema in modo che entrambi i 32/64 bit funzionino immediatamente. Fatemi sapere se questo risulta non essere il problema :)

+1

È '" "% programfiles% \ nodejs \ node.exe " "' non il percorso completo? –

+1

Ho installato la versione a 32 bit e sì - funziona ora. Grazie mille Justin. –

+2

Ho avuto lo stesso problema e ho applicato tutte le correzioni (l'installazione di x86 o la modifica di web.config o l'immissione di un collegamento simbolico) suggerite qui e in altri posti senza alcun risultato. Si scopre che dopo aver applicato queste correzioni è necessario riavviare WAS con i seguenti comandi da PowerShell o Prompt dei comandi: "net stop was" e "net start w3svc" Una volta eseguiti questi comandi, la correzione ha funzionato. Ho trovato questo nella pagina di problema per questo specifico errore: https://github.com/tjanczuk/iisnode/issues/302 – Conor

21

con node.js (64-bit), prova a mettere questo in fondo web.config

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

Questo ha funzionato per me - grazie – markbarton

+0

Questo mi ha aiutato pure. La variabile di ambiente '% ProgamFiles %' non sembra espandersi. Hardcoding il valore in là ha funzionato. –

+0

grazie per le informazioni, funziona come un fascino! –

6

Invece di installare il 32 -bit versione, è possibile creare un collegamento simbolico dal percorso a 32 bit a quello a 64 bit.

Al prompt cmd.exe:

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

sorprendente che questo ancora non è fisso e l'impostazione web.config sembra essere ignorato.

Problemi correlati