【发布时间】:2019-02-11 05:03:47
【问题描述】:
本期demo repo为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
那么我的代码有什么问题?我该如何解决这个问题?
【问题讨论】:
-
为什么要处理下一个请求?您只需要定义应用程序的路由,所有 else 请求都必须由 next.js 默认处理程序处理。
标签: javascript hapijs next.js