Демонстрационное репо этого выпуска - https://github.com/hh54188/happy-server/tree/issue-demo
Я пытаюсь интегрировать Next.js с Hapi.js в качестве плагина. Вот основная структура моей папки проекта плагина next.js:
--plugins
|--app
|--pages
|--app
|--a.js
|--handlers
|--public
|--dist
|--index.js
|--next.config.js
А вот основной контент index.js, больше всего для регистрации маршрута
const nextRenderService = next({
dir: path.join(__dirname)
});
module.exports = {
name: "AppService",
version: "0.0.1",
register: async function(server, options) {
await nextRenderService.prepare();
server.route({
method: "GET",
path: `/app/${assetPrefix}/_next/webpack-hmr`,
handler: nextHandlerWrapper(nextRenderService)
});
server.route({
method: "GET",
path: "/app/{param*}",
handler: defaultHandler(nextRenderService)
});
server.route({
method: "GET",
path: `/app/${assetPrefix}/_next/on-demand-entries-ping`,
handler: nextHandlerWrapper(nextRenderService)
});
server.route({
method: "GET",
path: `/app/${assetPrefix}/_next/-/page/{param*}`,
handler: {
directory: {
path: path.join(__dirname, pagesPath),
listing: true
}
}
});
server.route({
method: "GET",
path: `/app/${assetPrefix}/_next/{param*}`,
handler: {
directory: {
path: path.join(__dirname, distPath),
listing: true
}
}
});
}
};
Однако, когда я запускаю сервер и посещаю http://127.0.0.1:4000/app/a,, страница может быть успешно обработана, и большинство файлов сценариев может успешно загрузиться. Но статус _next/webpack-hmr
и _next/on-demand-entries-ping
запросов - 404
. И я заметил, что 404 статус от Next.js, а не Hapi.js
Так что не так с моим кодом? Как я могу решить эту проблему?