NestJS Fastify微服务中EJS视图引擎配置及文件未打包问题求助
解决NestJS Fastify微服务中EJS视图引擎配置问题
1. 安装必要依赖
先补全视图引擎相关依赖:
npm install ejs @fastify/view
2. 配置Nest CLI同步模板文件到dist
Nest默认只编译.ts文件,需要修改nest-cli.json让构建时自动复制EJS模板到dist目录:
{ "$schema": "https://json.schemastore.org/nest-cli", "collection": "@nestjs/schematics", "sourceRoot": "src", "compilerOptions": { "deleteOutDir": true, "assets": ["src/views/**/*"], // 复制src/views下所有文件 "watchAssets": true // 开发时监听模板变化自动同步 } }
3. 修正视图引擎路径配置
构建后模板会被放到dist/views,调整setViewEngine的路径配置:
方式一:基于__dirname拼接
import { join } from 'path'; import * as ejs from 'ejs'; // 构建后当前文件在dist/src目录,向上一级到dist后指向views app.setViewEngine({ engine: { ejs }, templates: join(__dirname, '..', 'views'), });
方式二:基于项目根目录拼接(更直观)
templates: join(process.cwd(), 'dist', 'views'),
4. 验证配置
- 执行
npm run build,检查dist目录下是否生成views文件夹及对应EJS文件 - 启动生产环境服务
npm run start:prod,测试视图渲染接口确认模板加载正常
内容的提问来源于stack exchange,提问作者excitedHipster
相关产品推荐
相关产品推荐

