2017-03-24 3 views
0

Ich benutze React BrowserHistory für die Navigation. Ich möchte, dass die gleichen Dateien von meinem Node-Server unabhängig vom URL-Pfad bereitgestellt werden.Knoten, der die gleichen Ressourcen von allen Pfaden versorgt

Mein Server-Code:

const http = require('http'); 
const path = require('path'); 
const express = require('express'); 
const app = express(); 
const hostname = 'localhost'; 

app.use(express.static('../public')); 

app.get('*', (req, res)=>{ 
    res.sendFile(path.join(__dirname, '../public/index.html')); 
}); 

const port = process.env.PORT || 8007; 
app.listen(port,()=>{ 
    console.log('Production Express server running at localhost:' + port) 
}); 

http://localhost:8007 =>

http://localhost:8007/help => funktioniert

http://localhost:8007/help/faq = gut funktioniert> Fails

ich alle URLs die gleichen Ressourcen zurückkehren möchten , serviert von ../public. Es scheint jedoch, dass die express.static nicht funktioniert, wenn die Ressource nicht vom Stamm angefordert wird. Wenn zum Beispiel der Browser nach <script src="scripts/main.js"></script> fragt, denkt er, dass ich ../public/help/scripts/main.js möchte, während ich eigentlich ../public/scripts/main.js/ möchte. Da Express diese Datei nicht findet, geht es weiter zu app.get('*'..., die die ../public/index.html-Datei zurückgibt, wenn das Skript angefordert wird.

So, das gewünschte Verhalten ist:

  • Rückkehr die gleiche index.html für jeden Pfad (mit einer beliebigen Anzahl von Unterordnern), und lassen Sie reagieren herauszufinden, was
  • Rückkehr die Ressourcen zu zeigen, immer in Bezug auf den Pfad von index.html serviert wird, nicht in Bezug auf den Pfad in der URL

es funktioniert, wenn ich absolute Pfade in meinen Ressourcenanforderungen (IE <script src="http://localhost:8007/scripts/main.js"></script>) verwenden, aber es ist wie das Schreiben isn offensichtlich‘ t wünschenswert, weil es ch sein muss angestiegen, wenn es anderswo gehostet wird.

Was soll ich tun?

+1

Das ist, was passiert, wenn relative URLs nach Skripten wie diesem fragen, unabhängig vom Server, ändere sie einfach in '

Verwandte Themen