2017-02-02 5 views
2

Bei der Bereitstellung einer node.js/express App auf Azure Websites bekomme ich "Can not GET /" Fehler im Browser. Die gleiche Anwendung läuft einwandfrei auf dem lokalen Rechner.Azure Websites + node.js - Kann nicht GET/

web.config ist Standard (ich nur die statische Rewrite-Regel entfernt), so:

<!-- All other URLs are mapped to the node.js site entry point --> 
    <rule name="DynamicContent"> 
     <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> 
     </conditions> 
     <action type="Rewrite" url="src/server/app.js"/> 
    </rule> 
    </rules> 

-Code wird in src/server/ (Knotenfunktionen) eingesetzt und src/client/ (statische Inhalte) Ordner.

Gemäß der FREB protokolliert die src/server/apps.js geholt wird, aber am Ende der folgende Fehler ausgelöst:

ErrorCode The system cannot find the file specified.  (0x80070002) 

Innen app.js Ich habe die folgende Konfiguration für statische Dateien:

app.use(express.static('./src/client/')); 

Antwort

1

Azure Websites führt Knoten aus dem Ordner, in dem die Datei in der package json als Startdatei definiert ist, so z nach folgenden Kriterien:

"start": "node src/server/app.js" 

Tatsache, es node app.js vom src/server Ordner ausgeführt werden (Sie können dort auch die iisnode.yml-Datei). Das führt dazu, dass alle relativen Pfade durcheinander geraten. Eine Lösung hierfür besteht darin, absolute Pfade zu verwenden, so z.B. zwischen zwei Pfaden, z. process.env.NODE_ENV Variable.

+0

Eine andere Lösung besteht darin, das Startscript von src/server/in den Ordner wwwroot/zu verschieben. Dies erfordert Änderungen in nur einer Datei. –

Verwandte Themen