Back to Blog

ncc 打包编译nestjs

1 min read 181 words Ethan Yang

记录在使用 ncc 打包编译 nestjs 时遇到的问题及解决方案,特别是与 hbs 模版引擎相关的配置调整。

背景:h1

最近在使用ncc 打包编译 nestjs,由于 nestjs 使用 hbs 作为模版引擎。

原先官网样例:

Terminal window
npm install --save hbs
import { NestFactory } from '@nestjs/core'
import { NestExpressApplication } from '@nestjs/platform-express'
import { join } from 'path'
import { AppModule } from './app.module'
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication>(AppModule)
app.useStaticAssets(join(__dirname, '..', 'public'))
app.setBaseViewsDir(join(__dirname, '..', 'views'))
//直接使用设置模版
app.setViewEngine('hbs')
await app.listen(3000)
}
bootstrap()

这样通过 ncc 编译,会存在丢失问题:

因此做如下设置即可:

import { NestFactory } from '@nestjs/core'
import { NestExpressApplication } from '@nestjs/platform-express'
import { join } from 'path'
import { AppModule } from './app.module'
import * as HBS from 'hbs'
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication>(AppModule)
app.useStaticAssets(join(__dirname, '..', 'public'))
app.setBaseViewsDir(join(__dirname, '..', 'views'))
//手动重写
app.set('view engine', 'hbs')
app.engine('hbs', HBS.__express)
await app.listen(3000)
}
bootstrap()

通过将其引入,再次编译即可。

Related Articles

Comments