如何告诉快递服务特定 angular "page"

How to tell express to serve a particular angular "page"

我写了一个 Angular 应用程序和一个 Express 应用程序。然后我编译了 Angular 应用程序,并分别在 Express 的 viewspublic 文件夹中复制粘贴了 index.html 和其他 js/CSS 文件。

现在,当我转到 root 时(localhost:3000 在我的例子中),它工作正常。如果我单击页面上的任何 link(比如注册 RouterLink),这将触发任何 angular 路由器,它工作正常并打开该特定页面(注册页面)。现在,如果我再次重新加载它,它将生成 Cannot GET /signup。这可能是因为 views 文件夹中没有 signup 页面。所以我的问题是:

  1. 如何让我的 MEAN 应用根据 Angular 路由服务 Angular 页面?
  2. 如何使用快速路由控制Angular路由?

你可以实现哈希策略来修复这个bug

RouterModule.forRoot(routes, {
    useHash: true
});

或者在您的 app.js 快速应用程序中使用它

app.get('**', (req, res, next) => {
    if (!req.originalUrl.startsWith('/api')) {
    // Skip API calls
        res.status(200).sendFile(pathJoin(__dirname, 'public', 'index.html'));
    } else {
        next();
    }
});