目前我们可以建立如下的nuxt。但是不能处理路线。我们基本上想从雀巢提供nuxt应用程序。
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module.js';
import { loadNuxt } from 'nuxt3';
import { buildNuxt, Resolver } from '@nuxt/kit';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// Check if we need to run Nuxt in development mode
const isDev = process.env.NODE_ENV !== 'production'
// Get a ready to use Nuxt instance
const nuxt = await loadNuxt({ rootDir: 'src/client-app/' })
// Enable live build & reloading on dev
if (isDev) {
buildNuxt(nuxt)
}
await app.listen(3001);
}
bootstrap();
下面是下一个(React)等效代码,这是工作,并试图实现在Nuxt 3.
https://github.com/hnviradiya/contact-list/blob/e38a72167d5710fcc9f3ed9718fa9bfe8ebb7d00/src/server/client-app/client-app.service.ts#L25
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { IncomingMessage, ServerResponse } from 'http';
import createServer, { NextServer } from 'next/dist/server/next';
@Injectable()
export class ClientAppService {
private nextServer: NextServer;
constructor(private configService: ConfigService) {}
async onModuleInit(): Promise<void> {
try {
this.nextServer = createServer({
dev: this.configService.get<string>('NODE_ENV') !== 'production',
dir: './src/client',
});
await this.nextServer.prepare();
} catch (error) {
console.error(error);
}
}
handler(req: IncomingMessage, res: ServerResponse) {
return this.nextServer.getRequestHandler()(req, res);
}
}
在nuxt2中有nuxt.render(req, res)
或nuxt.renderRoute(route, context)
,但这些方法在nuxt3中不可用。
https://nuxtjs.org/docs/internals-glossary/nuxt/
那么如何通过NestJs服务nuxt应用程序。
以下是nuxt3代码所在的repo,但它不服务于nuxtapp。
https://github.com/hnviradiya/nest-nuxt
1条答案
按热度按时间tcomlyy61#
虽然Nestjs是一个很棒的服务器,但它的Angular 风格@decorators和模块化设置与Nuxt 3的简单搭建方式大不相同。
这个概念感觉像是个坏主意。