Javascript NextJS:使用自定义服务器(NestJS)呈现特定页面
我正在尝试将NestJS用作NextJS的一个简化版本,如中所述,简化版本如下:Javascript NextJS:使用自定义服务器(NestJS)呈现特定页面,javascript,reactjs,typescript,next.js,nestjs,Javascript,Reactjs,Typescript,Next.js,Nestjs,我正在尝试将NestJS用作NextJS的一个简化版本,如中所述,简化版本如下: @Controller(“/”) 导出类ViewController{ @获取('*')) 异步静态(@Req()Req:Request,@Res()Res:Response){ //这将返回下一个()应用程序,如中所述https://nextjs.org/docs/advanced-features/custom-server const server=this.viewService.getNextServer
@Controller(“/”)
导出类ViewController{
@获取('*'))
异步静态(@Req()Req:Request,@Res()Res:Response){
//这将返回下一个()应用程序,如中所述https://nextjs.org/docs/advanced-features/custom-server
const server=this.viewService.getNextServer();
const handle=server.getRequestHandler();
句柄(req、res);
}
}
只要我为任何路由注册处理程序(即@Get('*')
),这就可以正常工作。例如,当我访问/home
时,会呈现页面/home.tsx
但是,由于我只想为特定页面注册它,例如@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应用程序服务于特定的下一页。我知道,但我更喜欢只设置一个普通控制器。最终使用了下一步的渲染方法,如中所述:
@Controller(“/”)
导出类ViewController{
@回家
公共异步showHome(@Req()Req:Request,@Res()Res:Response){
const parsedUrl=parse(req.url,true);
//这将返回下一个()应用程序,如中所述https://nextjs.org/docs/advanced-features/custom-server
const server=this.viewService.getNextServer();
wait server.render(req、res、parsedUrl.pathname、parsedUrl.query);
}
}