Javascript 使用Express创建单页应用程序
我正在尝试使用React/Redux/Express堆栈创建SPA。我的服务器当前看起来如下所示:Javascript 使用Express创建单页应用程序,javascript,node.js,express,Javascript,Node.js,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('*',
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 bundle file的路径”的脚本标记。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>
编辑:您在提供服务的目录路径中有一个输入错误。像这样添加一个/
:\uu dirname+'/..'
正如我在评论中所说,如果您显示\uu dirname
,您会立即看到它。似乎您正在以正确的顺序使用express
中间件。你的HTMLsrc=
看起来像什么?src=“../build/app.bundle.js”@RaphaMexThere。把你的全部HTML,我修复它在一个回答我的答案。发生的情况是服务器正在查看。/client/static/public/
。此外,出于明显的安全原因,您不能在HTML中使用。
。在src加载HTML文件时,仍然会出现相同的错误。Mmmm。。。。/build/
是相对于。/client/static/public/
的吗?是的,它是“../client/static/build/”。我更改了您的答案以符合我的路径,但它不起作用。请检查您的\uu dirname
。它应该已经起作用了。我看不见:)尝试删除结尾/
,比如:app.use(express.static(\uu dirname+'../client/static/build')代码>