0

テンプレートを読み込もうとすると、次のエラーでスクリプトが失敗します。

FATAL ERROR: JS Allocation failed - process out of memory exited with code 5

私が呼び出しているコードは次のようになります。

emailTemplates(templatesDir, function(err, template) {
    winston.info("Setting up templates.", templatesDir);
    if(err) {
        winston.error(err);
    }else{
        var today = new Date().getDay();
        winston.info("Found that today is ", aDays[today]);

        template("notify", {
            reports: [{
                item: "merged",
                desc: "Blah blah"
            },{
                item: "searched",
                desc: "Blah blah"
            }],
            vars: Operators.BBT.mail,
            day: aDays[today],
            fusionAPIRan: canRunFAPI
        }, function(err, html, text) {
            if(err) {
                winston.error(err);
            }else{
                winston.info("Attempting to send an email!");
                smtpTransport.sendMail({
                    from: "Webmaster <webmaster@example.co.uk>",
                    to: "james@example.co.uk",
                    subject: "Worker - Notification Email",
                    html: html
                }, function(error, response){
                    if(error){
                        winston.error(error);
                        cb(false);
                    }else{ 
                        winston.info("Message sent: " + response.message + ", message id: " + response.messageId);
                        cb(true);
                    }
                });
            }
        });
    }
});

奥まで入っFound that today is xxxwinston.error中が呼ばれません。何が原因ですか?おそらく危険なテンプレートですか?

4

2 に答える 2

1

掘り下げてデバッグを重ねた結果、この問題の原因を突き止めることができました。EJS を使用して HTML テンプレート内の JavaScript コードを処理し、それをNodemailerを使用して電子メールで送信するnode-email-templatesを使用しています

この問題は、特にコメント内の変数を処理しようとしたときに、EJS モジュール内で発生します。

<!-- The entire job took <%= time => to complete. -->

コメント内のコードは<%= time %>、行のどこかでクラッシュを引き起こします。このバグは、 EJS の GitHub の問題ページで報告しました。仕事で時間ができたら修正しようと思います。

于 2013-04-26T14:35:10.863 に答える