我正在将Inert与Hapi.js结合使用,并且有一个简单的目录处理程序设置可以服务于React App:
{
method: 'GET',
path: '/{param*}',
handler: {
directory: {
path: '.',
redirectToSlash: true,
index: true,
},
},
}
这在访问http://localhost:8080时很好用。当我添加/ anything时,我得到一个404。
如何获取所有重定向到已定义路径的请求?我已经阅读了Inert文档,并尝试了Hapi.js API文档中的多个想法,但无济于事。
谢谢
答案 0 :(得分:0)
当响应为404时,我使用了"engineOptions": {
port: 9222 // Or whatever port you wish to assign
}
生命周期钩子给Hapi总是发送我的onPreResponse
index.html
这样,它总是退回到我的ui,这使react-router可以处理非api路由。您可以在the docs.
中详细了解Hapi的生命周期答案 1 :(得分:-1)
这是我的设置,用于响应投放和正常工作。
路由配置:
{
method: 'GET',
path: '/{param*}',
config: Controller.dashboard
},
控制器:
exports.dashboard = {
auth: false,
description: 'ui build request handler',
handler: async (request, h) => {
return h.file(config.get('uiBuildPath') + 'index.html', {confine: false});
}
};
config.get('uiBuildPath')
返回服务器中我的react app build目录的路径。只是这个
我将路由配置放在路由定义的末尾,这是确切的顺序。确保将此定义结尾
server.route([
{
method: 'GET',
path: '/login',
options: Controller.login
},
{
method: 'GET',
path: '/logout',
options: Controller.logout
},
{
method: 'GET',
path: '/',
config: Controller.dashboard
},
{
method: 'GET',
path: '/{param*}',
config: Controller.dashboard
},
]);