0
我正在使用React BrowserHistory
進行導航。我希望從我的節點服務器提供相同的文件,而不管URL路徑如何。節點從所有路徑提供相同的資源
我的服務器代碼:
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 =>工作正常
http://localhost:8007/help/faq =>失敗
我希望所有的URL返回相同的資源,服務於../public
。但是,似乎express.static
不從根目錄請求資源時不起作用。所以,例如,當瀏覽器要求<script src="scripts/main.js"></script>
時,它認爲我想要../public/help/scripts/main.js
,而我實際上需要../public/scripts/main.js/
。所以,因爲express沒有找到這樣的文件,所以它移動到app.get('*'...
,當請求腳本時它將返回../public/index.html
文件。
因此,所需的行爲是:
- 換取任何路徑相同的index.html(與任意數量的子文件夾),並讓它再反應弄清顯示
- 回報的資源總是相對於index.html的是從,不相服的路徑在URL
它的工作原理,當我用我的資源請求(即<script src="http://localhost:8007/scripts/main.js"></script>
)絕對路徑的路徑,但是寫這樣說,這顯然ISN」因爲它需要ch當它被託管在其他地方時變得黯淡
我該怎麼辦?
這就是當你有相對URL請求這樣的腳本時會發生什麼,不管服務器如何,只要把它改成'