Angular 2+/NodeJS/Express:页面刷新时路由失败



所以我首先认为这是一个Heroku问题,但在使用NodeJS本地运行时也会发生同样的事情。

我的Angular应用程序的主页显示良好,使用链接导航时路线工作正常。

但是,如果我试图刷新路由上的页面(比如/login(,那么服务器只会回复以下文本:Heroku上的/app/dist/meal-planner/index.html,以及/Users/name-here/Development/workspace/meal-planner/dist/meal-planner/index.html本地

这是我的server.js:

//Install express server
const express = require('express');
const http = require('http');
const path = require('path');
const app = express();
// Serve only the static files form the dist directory
app.use(express.static(path.join(__dirname, '/dist/meal-planner')));
// For all GET requests, send back index.html (PathLocationStrategy)
app.get('*', (req,res) => {
res.send(path.join(__dirname, '/dist/meal-planner/index.html'));
});
// Start the app by listening on the default Heroku port
const port = process.env.PORT || 8080;
app.set('port', port);
const server = http.createServer(app);
server.listen(port, () => console.log('Running on port ' + port));

我的文件夹结构只是为了以防万一。。。

res.send(path.join(__dirname, '/dist/meal-planner/index.html'));

path.join返回一个字符串,您将该字符串作为响应发送。这就解释了为什么服务器会用文本进行响应。

您可能想要sendFile而不是send:

res.sendFile(path.join(__dirname, '/dist/meal-planner/index.html'));

最新更新