阻止 Next.js 生成某些路径文件
Preventing Next.js from generating certain path files
我目前正在使用 Node.js、Koa、React 和 Next.js 构建电子商务(Shopify、BigCommerce 等)扩展。
作为代码库的一部分,我有 URL 只能在服务器端执行的方法。 URL 不应生成页面。但是,Next.js 总是需要生成一个页面。
有没有办法只让 Next.js 简单地调用 URL 方法而不生成页面?例如,/app/auth
不应生成页面,而是执行服务器代码。但是,/app/dashboard
应该会生成一个页面。
我知道使用 useFileSystemPublicRoutes
来防止这种行为。但是,我发现它很不稳定,因为它还需要客户端代码。
However, Next.js always requires a page to be generated
不,这不是真的,您可以使用 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
我目前正在使用 Node.js、Koa、React 和 Next.js 构建电子商务(Shopify、BigCommerce 等)扩展。
作为代码库的一部分,我有 URL 只能在服务器端执行的方法。 URL 不应生成页面。但是,Next.js 总是需要生成一个页面。
有没有办法只让 Next.js 简单地调用 URL 方法而不生成页面?例如,/app/auth
不应生成页面,而是执行服务器代码。但是,/app/dashboard
应该会生成一个页面。
我知道使用 useFileSystemPublicRoutes
来防止这种行为。但是,我发现它很不稳定,因为它还需要客户端代码。
However, Next.js always requires a page to be generated
不,这不是真的,您可以使用 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