javascript - 有时会出现 Node.js 错误 : Can't set headers after they are sent,

标签 javascript node.js express

我有一个带有 post 方法和 post 路由的 HTML 表单

    app.post('/',
        c_emailController.create,
        c_bookingController.create
    );

当我按下提交时,我需要向我和客户端 [emailController] 发送一封电子邮件,并将数据保存在我的预订集合 [bookingController] 中,但有时,当我按下提交时,会出现此错误:

Can't set headers after they are sent

最奇怪的部分是:不是每次,有时会发生,有时不会。你能检查一下我的 Controller 代码,看看是否有问题吗?

我认为这是 next(); 的问题。

JS FIDDLE -> http://jsfiddle.net/a6s7npcg/

OBS:未发生错误时代码正在运行

最佳答案

我认为问题在于您通过两次调用 sendEmail 函数来调用两次 next 回调。

要避免这种情况,您可以使用 async图书馆,您将借助它发送 parallel 中的电子邮件并且仅在两封电子邮件都发送后才调用 next

var async = require('async');

async.parallel({
   alertEmail: function(callback) {
       var alertEmailOptions = {
        to: "myemail@com",
        from: "myemail@com",
        subject: "[alert]",
        html: "some html",
       };
       sendgrid.send(alertEmailOptions , callback);
   }, 
   confirmEmail: function(callback) {
        var confirmationEventOptions = {
        to: req.body.email,
        from: "reserva@pubcrawlsp.com",
        subject: "Reserva -  "
        html: "SOME HTML",
        };
        sendgrid.send(confirmationEventOptions, callback);
   }
}, function (err, results) {
   next();
});

关于javascript - 有时会出现 Node.js 错误 : Can't set headers after they are sent,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28075128/

相关文章:

javascript - Angular Directive(指令)

javascript - 每x秒切换多个div位置jquery

javascript - 静态类变量

javascript - Node 模块对象范围: share an object across all functions

node.js - 如何使用express检查 Node 中的jwt登录

javascript - 删除子循环(已损坏)?

javascript - 如何正确格式化 JOI 日期/架构?

javascript - 为 tensorflow.js 模型实现同步 fit() 或训练函数

javascript - 调用中间件中的对象函数

node.js - 我的 Node.js Express 代码中出现语法错误