如何告诉快递服务特定 angular "page"
How to tell express to serve a particular angular "page"
我写了一个 Angular 应用程序和一个 Express 应用程序。然后我编译了 Angular 应用程序,并分别在 Express 的 views
和 public
文件夹中复制粘贴了 index.html
和其他 js/CSS
文件。
现在,当我转到 root 时(localhost:3000
在我的例子中),它工作正常。如果我单击页面上的任何 link(比如注册 RouterLink
),这将触发任何 angular 路由器,它工作正常并打开该特定页面(注册页面)。现在,如果我再次重新加载它,它将生成 Cannot GET /signup
。这可能是因为 views
文件夹中没有 signup
页面。所以我的问题是:
- 如何让我的 MEAN 应用根据 Angular 路由服务 Angular 页面?
- 如何使用快速路由控制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();
}
});
我写了一个 Angular 应用程序和一个 Express 应用程序。然后我编译了 Angular 应用程序,并分别在 Express 的 views
和 public
文件夹中复制粘贴了 index.html
和其他 js/CSS
文件。
现在,当我转到 root 时(localhost:3000
在我的例子中),它工作正常。如果我单击页面上的任何 link(比如注册 RouterLink
),这将触发任何 angular 路由器,它工作正常并打开该特定页面(注册页面)。现在,如果我再次重新加载它,它将生成 Cannot GET /signup
。这可能是因为 views
文件夹中没有 signup
页面。所以我的问题是:
- 如何让我的 MEAN 应用根据 Angular 路由服务 Angular 页面?
- 如何使用快速路由控制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();
}
});