2017-07-17 57 views
0

我目前正在开发angular 2应用程序。但我很难理解为什么我的路由工作在ng serve而不是在nodemon?我已经尝试了基于我研究的多种方法,但他们并不像我想象的那样工作。 (可能是由于我缺乏了解)Angular 2路由只适用于ng服务,但不适用于nodemon

方法1

添加在app-routing.module.tsuseHash: true但是,这会导致所有的URL有#出现在它。我在想这是为了调试目的吧?

const routes = [ 
{ path: '', component: sampleComponent1 }, 
{ path: 'page2', component: sampleComponent2 } 
]; 

@NgModule({ 
    imports: [RouterModule.forRoot(routes, {useHash: true})], 
    exports: [RouterModule] 
}) 

方法2

变化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是做了正确的道路。有人可以帮我解决这个问题吗?

+0

'useHash'不仅仅用于调试。这是一个设计选择。 – HaveSpacesuit

+0

您是否尝试过构建并使用nodemon服务dist文件夹? – Janpan

+0

@Janpan是的,我会在运行nodemon之前始终做一个构建 – JustStarted

回答

0

这部作品在与角CLI发展的原因是不存在的所有路由都得到担任的index.html

这使你的角应用程序处理所有的路由不管是什么URL实际上是要求。一旦您的应用程序在浏览器中启动,Angular路由器(假设您正在使用的)会读取路由信息并向您的用户显示正确的路由。

在这里还有其他答案解释这个解决方案以及您的Web服务器。

+0

这听起来与我在方法2中做的相似吗?即使我请求一个页面时,它总会得到一个错误404 'localhost/page2'和index.html将得到服务 – JustStarted

+0

B-I-N-G-O !!!是的,所以你的404处理程序是index.html。 – Brocco

相关问题