使用节点和角度应用程序刷新页面时获取 404 页面

Kau*_*ana 3 javascript node.js http-status-code-404 angular-ui-router angular

我是新来的Angular。我尝试使用Nodejs和创建 CRUD 操作Angular。我正在使用NodejsandExpress作为后端和Angular前端。

当我使用 routerLink 在页面上导航时,它工作正常,但是当我在页面上导航然后刷新页面时,它会显示页面未找到错误。

我知道那里发生了什么,Express 应用程序中没有定义路线,所以我刷新页面,它显示 404 错误。

如何使其与 Angular 和 Express 路线配合使用?

这是我的代码。

app.js( 服务器 )

const express = require('express');
const path = require('path');
const http = require('http');
const bodyParser = require('body-parser');
var app = express();


app.use(bodyParser.urlencoded({extended : false}));
app.use(bodyParser.json());

app.use(express.static(path.join(__dirname,'dist/MEAN-blog')));


app.get('/',(req,res) =>{
    res.sendFile(path.join(__dirname,'dist/MEAN-blog/index.html'));
});

app.post('/register',(req,res) =>{
    var u = new User(req.body);
    u.save();
    res.send(u).status(200);
})


var server  = http.createServer(app);

server.listen(8080,'0.0.0.0',() =>{
    console.log('Server is running on 8080');
})
Run Code Online (Sandbox Code Playgroud)

这是角度的路线

const routes: Routes = [
    {
        path : '',
        component : PostsComponent
    },
    {
        path : 'users',
        component : UsersComponent
    },
    {
        path : 'users/:id',
        component : UsersComponent
    },
    {
        path : 'post/:id',
        component : PostDetailsComponent
    },
    {
        path : 'login',
        component : LoginComponent
    },
    {
        path : 'signup',
        component : SignupComponent
    },

];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)

我用的是角度5

我该如何解决这个问题?

谢谢

Isa*_*ine 6

通常我所做的是首先包含我的所有 api 端点,然后在最后添加这个

app.get('*',(req,res) =>{
    res.sendFile(path.join(__dirname,'dist/MEAN-blog/index.html'));
});
Run Code Online (Sandbox Code Playgroud)

这样,任何不是的端点都/api将返回index.html,并且角度路由将从那里接管。

另一种选择是使用 SSR,但有点痛苦。