簡體   English   中英

快遞,如何始終為 static 目錄服務?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM