You need to enable JavaScript to run this app. NestJS渲染静态HTML文件时报Cannot find module 'html'错误
优惠活动
大模型
产品
解决方案
定价
更多

NestJS渲染静态HTML文件时报Cannot find module 'html'错误

问题原因

你出现Cannot find module 'html'报错的核心原因是:你在main.ts中通过app.setViewEngine('html')指定了使用html作为模板引擎,但npm生态中不存在名为html的模板引擎依赖,express在查找对应渲染依赖时找不到包就抛出了该错误。
而且你本身的需求是渲染无模板的纯静态HTML,完全不需要引入模板渲染逻辑,你配置的ServeStaticModule已经具备托管静态资源的能力。


解决方案

方案1(推荐:适配静态资源托管逻辑,不需要额外装依赖)

  1. 删除app.controller.ts中根路由的@Render('index.html')装饰器和对应的root()方法,你配置的ServeStaticModule会自动将public目录下的index.html作为根路径的返回内容
  2. 删除main.ts中的app.setViewEngine('html')这行冗余配置

修改后启动服务,根路径就可以正常返回index.html内容。

方案2(保留@Render渲染逻辑的处理方式)

如果你确实需要通过@Render装饰器来控制HTML返回,你可以用兼容原生HTML语法的ejs引擎来实现:

  1. 安装ejs依赖
npm install ejs
  1. 修改main.ts中的视图引擎配置,将原来的app.setViewEngine('html')替换为以下两行:
app.setViewEngine('ejs');
app.engine('html', require('ejs').renderFile);

修改后保留原@Render('index.html')的逻辑即可正常运行。


内容的提问来源于stack exchange,提问作者Elie G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 16:36:08