[英]Express, how to always serve static directory?
所以我需要 Express 始終提供 static 目錄。 這些是關於如何提供 index.html 的大量指南,例如這里。 他們使用以下代碼:
app.use(express.static(path.join(__dirname, 'build')));
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
然而對我來說問題是'/*'路由只服務於index.html,而不是它拉入的任何文件,例如main.js。 無論訪問者在哪條路徑上,我基本上都需要我的應用程序始終提供“build/”服務,因為路由是由前端使用 React Router 處理的。 例如:
app.get('/*', function (req, res) {
res.redirect('/');
});
不起作用,因為它刪除了路徑。 登陸“/aa/bb/cc”的用戶應該獲得與登陸“/”的用戶相同的內容(express.static)。 我試過app.use('/*', express.static(...)
,但是這會導致SyntaxError: expected expression, got '<'
in the browser 因為似乎每個請求都被路由到 static index.html文件?
不要將它放在app.get
中,在主 app.js 文件中作為app.use
按照 Express 文檔進行操作: https://expressjs.com/en/starter/static-files.html
為了回答我自己的問題,我找到了這個答案: https://stackoverflow.com/a/43373134/11441482
為了使所有文件都使用絕對路徑(例如 src="/main.js"),我必須在我的前端 Webpack 配置中將 output.publicPath 設置為“/”。 該屬性由 html-webpack-plugin 使用。 有關更多詳細信息,請參閱此問題: HtmlWebpackPlugin 注入加載非根網站路徑時中斷的相對路徑文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.