簡體   English   中英

使用Express創建單頁應用程序

[英]Creating a Single Page Application with Express

我正在嘗試使用React / Redux / Express堆棧創建SPA。 我的服務器當前如下所示:

import express from 'express'
import dotenv from 'dotenv'
import path from 'path'

dotenv.config()

const app = express()

app.use(express.static(__dirname + '../client/static/public/'))
app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, 
  '../client/static/public/index.html'))
})
app.listen(process.env.PORT)

在我的html中,我有一個腳本標簽,其中包含src =“ webpack捆綁文件的路徑”。 src返回html文檔,而不返回捆綁文件的內容。 我知道這是因為我的服務器中存在所有路由。 我的問題是如何設置路線,以使全包不干擾其他路線? 謝謝高級!

編輯:

這是我的完整HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Backers Online</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  </head>
  <body>
    <div id="root"></div>
    <script src="../build/app.bundle.js"></script>
  </body>
</html>

app.use(express.static(...))的目的是提供給定目錄中的文件。 出於安全原因,它不會提供該目錄之外的文件(例如../build/app.bundle.js 因此,應根據要提供目錄的次數添加它:

app.use(express.static(__dirname + '/../client/static/public/'));
app.use(express.static(__dirname + '/../client/static/build/'));

然后在客戶端,您只需要請求文件,HTML不知道哪些目錄包含它們:

<script src="app.bundle.js"></script>

編輯:您在您服務的目錄路徑中有一個錯字。 添加這樣的/__dirname + '/..'

正如我在評論中所說,如果顯示__dirname ,則會立即看到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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