Open webberwang opened 4 years ago
Can you elaborate on what happens when trying to use useRouter
?
It sounds like this may be two separate issues, but in general we don’t support other 3rd party routing libraries. nest-next uses nestjs for the routing but you can add a global filter to pass requests that don’t resolve within nest and try to resolve the request with next. See this issue for context https://github.com/kyle-mccarthy/nest-next/issues/38 On Feb 2, 2020, 8:37 PM -0600, Webber Wang notifications@github.com, wrote:
Reopened #39. — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.
@kyle-mccarthy
useRouter
is just empty object, which is inline with Nest not passing requests to Next.
Right, solving issue 2 (resolving requests not resolved in nest) would solve 1 (external router not working), since we wouldn't need next-routes
anymore.
Here's my attempt following #38...
server.ts
@Catch(NotFoundException)
export class NextPageFilter implements ExceptionFilter {
private requestHandler?: RequestHandler;
constructor(@Inject() private readonly renderService: RenderService) {
this.requestHandler = this.renderService.getRequestHandler();
}
catch(exception: HttpException, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const res = ctx.getResponse();
const req = ctx.getRequest();
if (this.requestHandler) {
return this.requestHandler(req, res);
}
throw exception;
}
}
(async () => {
/**
* Create server
*/
const server = Server({
dev: true,
});
await server.prepare();
/**
* Create app
*/
const app = await NestFactory.create(AppModule);
const renderer = app.get(RenderModule);
renderer.register(app as any, server);
/**
* Add service
*/
const service = app.get(RenderService);
app.useGlobalFilters(new NextPageFilter(service));
await app.listen(3000);
})();
useRouter
is still showing blank. I'm not too sure how to pass requests that don’t resolve within nest and try to resolve the request with next
. There isn't too much info on the internet for this specific use case.
@webberwang I added a new option in the nest-next beta preview. I think that it may allow for you to use next-routes. See https://github.com/kyle-mccarthy/nest-next/issues/38#issuecomment-647867509
The controller stops working if I use the routes handler.
I'm also unable to access
useRouter().query
fromnext/router
if I'm using routing with controller