fix(mail): resolve templates from __dirname so they exist in the built image

The Docker runtime image only ships dist/, but mail-config.service.ts
pointed at src/mail/mail-templates and nest-cli.json never copied the
.hbs files into dist/ either. This was silently masked before because
the return-before-sendMail bug meant the path was never touched; fixing
that bug now surfaces it as a hard crash on boot (readFileSync throwing
synchronously inside the MailerModule factory). Resolve the templates
dir from __dirname instead, which is correct in both dev (src/mail) and
the compiled image (dist/mail), and add the mail-templates .hbs files
to nest-cli.json's asset copy list so they actually land in dist/.
This commit is contained in:
Bastian Wagner
2026-08-01 09:27:44 +02:00
parent 8e318df94f
commit 1288f5fc60
2 changed files with 5 additions and 7 deletions

View File

@@ -11,12 +11,10 @@ export class MailConfigService implements MailerOptionsFactory {
constructor(private configService: ConfigService) {}
createMailerOptions(): MailerOptions {
const templatesDir = path.join(
this.configService.get('app.workingDirectory'),
'src',
'mail',
'mail-templates',
);
// __dirname resolves to src/mail in dev (ts-node) and dist/mail in the
// built image, so this stays correct without depending on whether the
// process was started from a source or compiled checkout.
const templatesDir = path.join(__dirname, 'mail-templates');
handlebars.registerPartial(
'layout',