hereの例に従ったメール確認メーラーを作成しようとしています。私はemail-template
とnodemailer
の両方のパッケージを追加しました。アプリケーション全体でtransporter
をアダプターとして使用可能にしました。私の実際のコントローラでNodeMailer - トランスポートオプションはトランスポートインスタンスまたは設定オブジェクトである必要があります
const EmailTemplate = require('email-templates');
var mailer = require('../mailer');
var sendEmailVerficationLink = mailer.templateSender(
new EmailTemplate({
views: { root: './verify' }
}), {
from: process.env.MAIL_FROM,
});
exports.sendVerficationLink = function (obj) {
sendEmailVerficationLink({
to: obj.email,
subject: 'Verify your Email'
}, {
name: obj.username,
token: obj.otp
}, function (err, info) {
if (err) {
console.log(err)
} else {
console.log('Sign up mail sent to ' + obj.email + ' for verification.');
}
});
};
、私はuser.ts
次のようにメールを送信しよう:私はsignup.ts
以下のようなemail-template
のラッパーを構築しようとしています
import * as mailer from 'nodemailer';
import * as dotenv from 'dotenv';
dotenv.load({ path: '.env' });
var mailConfig = {
host: process.env.MAIL_HOST,
port: process.env.MAIL_PORT,
auth: {
user: process.env.MAIL_USERNAME,
pass: process.env.MAIL_PASSWORD
}
};
var transporter = mailer.createTransport(mailConfig);
module.exports = transporter;
:以下はmailer.ts
のコードです
var verify = require('../utils/mailer-templates/signup');
signup = (req, res) => {
..
verify.sendVerficationLink(obj); // send the actual user object
..
}
しかし、私はこのエラーを得続けます
Error: Transport option must be a transport instance or configuration object
[1] at new Email (C:\Users\User\Documents\Vivavii-REST\node_modules\email-templates\lib\index.js:82:83)
[1] at Object.<anonymous> (C:\Users\User\Documents\Vivavii-REST\dist\utils\mailer-templates\signup.js:3:54)
[1] at Module._compile (module.js:641:30)
[1] at Object.Module._extensions..js (module.js:652:10)
[1] at Module.load (module.js:560:32)
[1] at tryModuleLoad (module.js:503:12)
[1] at Function.Module._load (module.js:495:3)
[1] at Module.require (module.js:585:17)
[1] at require (internal/module.js:11:18)
[1] at Object.<anonymous> (C:\Users\User\Documents\Vivavii-REST\dist\controllers\user.js:14:14)
[1] at Module._compile (module.js:641:30)
[1] at Object.Module._extensions..js (module.js:652:10)
[1] at Module.load (module.js:560:32)
[1] at tryModuleLoad (module.js:503:12)
[1] at Function.Module._load (module.js:495:3)
[1] at Module.require (module.js:585:17)
もっと私は 'exports.sendVerificationLink'に' exports.module =(VARNAME)を '変更し、別のモジュールにインポートしようとしたが、私はそれがmodule'のエラーではありません'取得しています。あなたは助けてもらえますか? – JackSlayer94
私はなぜこれを行うのか分かりません。しかし、 'module.exports.sendVerificationLink'に変更しようとすることはできますか? また、commonjsモジュール(require/module.export)の代わりに、ECMAScript 6モジュール(インポート/エクスポート)を使って作業することをお勧めします。私はcommonjsモジュールのアプローチで私の例を書いたので、 'const sendVerficationLink = require( './ example');'が必要です。 1つのアプローチを選択し、このようなエラーを回避するためにプロジェクト全体で使用します。 – galkin
ありがとう!私はes6に切り替えました。ありがとうございました!! – JackSlayer94