Nunjucks渲染faucet.html提示template not found错误排查
Nunjucks渲染提示template not found修复方案
问题根因
报错核心是Nunjucks的模板查找路径配置错误:
- 从报错栈可见你的入口代码
index.js位于项目的js/子目录下,若初始化Nunjucks时使用相对路径配置模板目录,Nunjucks会以js/目录为起点查找模板文件 - 如果没有手动调用
nunjucks.configure配置模板路径,Nunjucks会默认以执行node命令时的工作目录为查找起点,启动位置变化就会寻址失败
你的faucet.html模板存放在项目根目录(或根目录下的模板专属目录),不在Nunjucks的查找范围内,因此抛出找不到模板的错误。
修复步骤
- 引入Node.js原生
path模块,初始化Nunjucks时使用绝对路径指向模板存放目录,避免相对路径因执行位置变化导致的寻址错误,参考配置:
const nunjucks = require('nunjucks'); const path = require('path'); // __dirname对应当前index.js所在的js目录,../表示回到项目根目录 // 如果模板存放在根目录下的views文件夹,路径写path.join(__dirname, '../views') // 如果模板直接放在项目根目录,路径写path.join(__dirname, '../') nunjucks.configure(path.join(__dirname, '../views'), { autoescape: true, express: app // 配合Express框架使用时传入app实例 });
- 路径配置完成后,原有路由渲染逻辑无需修改,直接访问根路由即可正常渲染
faucet.html。
快速验证方式
你之前注释掉的index.html渲染逻辑如果可以正常运行,直接把faucet.html移动到和index.html完全相同的目录下,也可以临时解决问题,但生产环境更推荐使用上述绝对路径配置模板目录的方案,避免跨环境部署时出现同类路径错误。
内容的提问来源于stack exchange,提问作者Bugle TV
相关产品推荐
相关产品推荐

