防止Next.js生成某些路径文件

时间:2020-01-28 06:21:07

标签: javascript node.js reactjs next.js koa

我目前正在使用Node.js,Koa,React和Next.js构建电子商务(Shopify,BigCommerce等)扩展。

作为代码库的一部分,我具有只能在服务器端执行的URL方法。该网址不应生成任何页面。但是,Next.js始终需要生成一个页面。

有没有一种方法只能让Next.js简单地调用URL方法而不是生成页面?例如,/app/auth不应生成页面,而应执行服务器代码。但是,/app/dashboard应该会生成一个页面。

我知道使用useFileSystemPublicRoutes作为防止此行为的一种方法。但是,我发现它很不方便,因为它还需要客户端代码。

1 个答案:

答案 0 :(得分:0)

但是,Next.js始终需要生成页面

否,那是不对的,您可以使用custom server来决定路由是否应该呈现页面。

一个带有express.js的简单示例:
渲染页面

  server.get('/my-page', (req, res) => {
    return app.render(req, res, '/mypage', {...req.params, ...req.query})
  })

api端点

server.post("/my-endpoint", async (req, res) => {
     res.json({});
});

请注意,要运行自定义服务器,您需要使用以下内容更新package.json中的脚本:

"scripts": {
  "dev": "node server.js",
  "build": "next build",
  "start": "NODE_ENV=production node server.js"
}

如果您使用的是Koa.js,则有一个使用koa here的自定义服务器的官方示例