使用Express创建单页应用程序

时间:2017-12-17 01:07:41

标签: javascript node.js express

我正在尝试使用React / Redux / Express堆栈创建SPA。我的服务器目前看起来像这样:

[[1]]
  x        y PANEL group ymin     ymax xmin xmax colour   fill size linetype alpha
1 1 13.02040     1     1    0 13.02040 0.55 1.45     NA grey35  0.5        1    NA
2 2 14.37956     1     2    0 14.37956 1.55 2.45     NA grey35  0.5        1    NA

[[2]]
  x xend        y     yend PANEL group colour size linetype alpha
1 0  0.1 14.27065 14.27065     1    -1    red  0.5        1    NA
2 0  0.1 14.27065 14.27065     1    -1    red  0.5        1    NA

在我的html中,我有一个脚本标签,其中包含src =" webpack包文件的路径"。 src返回html文档而不是捆绑文件的内容。我知道这是因为我服务器中的所有路径。我的问题是如何设置路线,以便全能不影响其他路线?先谢谢你了!

编辑:

这是我的完整HTML:

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)

1 个答案:

答案 0 :(得分:1)

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,你会立即看到它。