【发布时间】:2017-04-06 10:41:16
【问题描述】:
情况
我正在开发一个使用 Hapi 服务器进行 REST 调用和多页 Angular2 网站客户端的 Web 应用程序。
Hapi 将所有 Angular2 文件提供给客户端:
let serverDirPath = path.resolve(__dirname);
server.route({
method: "GET",
path: "/{param*}",
config: {
auth: false,
handler: {
directory: {
path: path.join(serverDirPath, "../client"),
index: true
}
}
}
});
调用服务器根成功返回“index.html”,之后Angular2网站就完美运行了!所有对 Hapi 定义的路由的调用也可以正常工作。
问题
但是,如果我对任何 Angular2 定义的路由执行 GET(例如到达页面“/users”),Hapi 找不到该路由并返回错误 404。这可能是因为该路由未定义在哈皮服务器。请注意,如果我从“index.html”页面导航到那里,“/users”路线可以完美运行!
问题
如何通过直接 GET 调用访问“/user”页面?如果可能,我想将所有对 Hapi 路由的调用重定向到相应的 Angular2 路由(如果存在)。
提前谢谢你!
编辑:解决方案
我解决了!在 app.module.ts 的 providers 声明中,我添加了这个:
{
// Strategy to serve pages with /#/{path}. It's required to resolve Angular2 routes when using hapi.
provide: LocationStrategy,
useClass: HashLocationStrategy
},
所有 Angular2 url 必须以 /#/ 开头(例如 localhost/#/home),这对我很有用。
【问题讨论】:
-
嗨,这是我的皮肤。非常感谢。
标签: node.js angular get routes hapijs