【发布时间】:2021-07-06 23:55:36
【问题描述】:
我正在尝试将 NestJS 用作 NextJS 的 custom server,如 this article 中所述,简化版本如下所示:
@Controller('/')
export class ViewController {
@Get('*')
async static(@Req() req: Request, @Res() res: Response) {
// This returns a Next() app as described in https://nextjs.org/docs/advanced-features/custom-server
const server = this.viewService.getNextServer();
const handle = server.getRequestHandler();
handle(req, res);
}
}
只要我为任何路由注册处理程序(即@Get('*')),它就可以正常工作。例如。当我访问/home 时,会呈现pages/home.tsx。
但是,由于another issue,我只想为特定页面注册它,例如@Get('/home')。在这种情况下,我从 Next 获得了一个空的 404 页面(页面上没有内容,标题为 404)。控制台显示:
event - build page: /next/dist/pages/_error
wait - compiling...
event - compiled successfully
NestJS 在后台使用 express,所以我想这会转化为 server.get('/home', handle); 之类的东西。如果我尝试使用正则表达式,例如相同的问题@Get(/^\/(?!graphql).*/)。如果我尝试@Controller('/home') 和@Get('*'),也会出现同样的问题。
正在寻找一些解决方案来让 Nest 应用为特定的下一页提供服务。我知道nest-next,但我更喜欢设置一个普通的控制器。
【问题讨论】:
标签: javascript reactjs typescript next.js nestjs