Node.js 角度2+/NodeJS/Express:页面刷新时路由失败

Node.js 角度2+/NodeJS/Express:页面刷新时路由失败,node.js,angular,express,heroku,routing,Node.js,Angular,Express,Heroku,Routing,所以我认为这首先是一个Heroku问题,但是当使用NodeJ在本地运行时也会发生同样的情况 我的Angular应用程序的主页显示良好,使用链接导航时,路线工作正常 但是,如果我尝试刷新路由上的页面(比如说/login),那么服务器只会用以下文本响应: Heroku上的/app/dist/dine planner/index.html,以及 /Users/name here/Development/workspace/fine planner/dist/fine planner/index.htm

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

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

但是,如果我尝试刷新路由上的页面(比如说/login),那么服务器只会用以下文本响应: Heroku上的
/app/dist/dine planner/index.html
,以及
/Users/name here/Development/workspace/fine planner/dist/fine 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
返回一个字符串,您将该字符串作为响应发送。这解释了为什么服务器会用文本响应

您可能希望而不是
发送

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