【发布时间】:2017-07-18 01:56:35
【问题描述】:
我目前正在开发 Angular 2 应用程序。但是我很难理解为什么我的路由在ng serve 中有效,而不在nodemon 中有效?我已经根据我的研究尝试了多种方法,但它们并没有像我想象的那样工作。 (可能是我的理解不够)
方法一
在app-routing.module.ts 中添加useHash: true 但这会导致所有URL 中都出现#。我认为这是为了调试目的,对吧?
const routes = [
{ path: '', component: sampleComponent1 },
{ path: 'page2', component: sampleComponent2 }
];
@NgModule({
imports: [RouterModule.forRoot(routes, {useHash: true})],
exports: [RouterModule]
})
方法二
将app.js 更改为在抛出错误时呈现index。此方法不会在 URL 中包含 #,但它总是会在我的控制台中返回类似 GET /page2 404 1.688 ms - 987 的错误。
app.use(function (err, req, res, next) {
// set locals, only providing error in development
console.log(err.message);
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
res.status(err.status || 500);
res.render('error');
});
所以到目前为止,我更多地坚持方法 2,因为 URL 中没有显示 #,但我不确定方法 2 是否是正确的方法。有人可以帮我解决这个问题吗?
【问题讨论】:
-
useHash不仅仅用于调试。这是一种设计选择。 -
您是否尝试过构建然后使用 nodemon 为您的 dist 文件夹提供服务?
-
@Janpan 是的,我总是在运行 nodemon 之前进行 ng 构建
标签: node.js angular npm angular2-routing angular-cli