У меня есть сервер hapijs, обслуживающий маршруты API и приложение React. Я обслуживаю реагирующее приложение, используя инертный и обработчик с параметрами каталога. Однако, поскольку параметры, которые я использую в пути {param *}, будут автоматически обслуживать index.html, hapijs будет обслуживать страницу реакции только при отсутствии параметров. Это имеет смысл, поскольку хапи будет искать параметр в каталоге и ответит с ошибкой 404.
Теперь я хочу, чтобы хапи обслуживал страницу реакции независимо от параметра (или даже маршрута) и позволял реагировать на ошибку 404. Я не могу найти законное решение. Использование обработчика каталога не позволит использовать 404, а использование обработчика функции для обслуживания страницы будет обслуживать страницу без сценариев css или js.
Я использовал следующий учебник и читал другие, но безрезультатно.
https://medium.com/@notrab/using-create-react-app-with-hapi-js-8f4ef3dcd311
//manifest.js
module.exports = {
server: {
port: process.env.PORT,
router: { stripTrailingSlash: true },
routes: {
files: {relativeTo: path.join(__dirname, '../client/build')},
cors: {origin: ["*"],}
}
},
register: {
plugins: [
{ plugin: require('inert') },
{
plugin: 'vision',
options: {
engines: { html: require('handlebars') },
path: path.join(__dirname, '../client/build')
}
},
{
plugin: require('./controllers/home'),
},
],
}
// controller/home
module.exports.register = function(server, options, next) {
server.route({
method: 'GET',
path: '/{param*}',
handler: {
directory: {
path: path.join(__dirname, "../../../client/build/"),
listing: false,
index: ['index.html']
}
// the following handler serves the page but not the css or js
//handler: (request, h) => {
// return h.file("index.html", {confine: false});
//}