AdonisJS用message.htmlView发邮件 已装@adonisjs/view仍报错
AdonisJS调用htmlView发送邮件报依赖缺失错误排查方案
问题描述
在AdonisJS框架中调用message.htmlView方法发送邮件时触发运行时错误,具体报错文本:
Error: "@adonisjs/view" must be installed before using "message.htmlView"
已按照报错提示安装@adonisjs/view包后报错仍然触发,按以下方向逐一排查修复即可:
排查与修复步骤
完成安装后执行包配置命令,注册服务提供者
AdonisJS生态的官方扩展包仅执行安装命令不会自动生效,必须执行对应配置命令完成服务注册:- 在项目根目录执行配置命令:
node ace configure @adonisjs/view- 执行完成后检查
start/app.ts文件的providers数组,确认已经自动加入@adonisjs/view/providers/ViewProvider条目,没有该条目则手动补上即可。
校验安装的包版本与当前框架大版本匹配
跨大版本的包无法被框架正确识别,会持续抛出依赖缺失错误:- 若项目使用AdonisJS v5版本,需安装适配v5的view包版本,执行命令:
npm i @adonisjs/view@^6.0.0 - 若项目使用AdonisJS v6版本,直接安装最新版即可,执行命令:
npm i @adonisjs/view@latest
安装完成后可以执行npm ls @adonisjs/view确认实际安装的版本号是否符合预期。
- 若项目使用AdonisJS v5版本,需安装适配v5的view包版本,执行命令:
清除缓存后重启服务
旧的编译缓存、运行时缓存会导致新安装的包、修改的配置不生效:- 终止当前正在运行的开发服务、生产服务进程
- 删除项目根目录下的
tmp缓存目录、build产物目录(存在即删除) - 本地开发重新执行
node ace serve --watch启动服务,生产环境重新执行构建流程后再启动服务。
检查邮件模块自定义配置
如果在config/mail.ts中自定义了邮件驱动的初始化逻辑,确认没有覆盖默认的视图实例注入逻辑。默认配置下邮件模块会自动从IoC容器中拉取已注册的View服务,手动初始化驱动时如果没有传入view实例,也会触发该报错。
内容的提问来源于stack exchange,提问作者Shubham Jain
相关产品推荐
相关产品推荐

