流星光纤电子邮件



我试图发送一个简单的电子邮件(本地,所以我的环境变量没有设置),我得到:Error: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.

这是我的代码

Meteor.methods({
  sendInviteEmail: function(emails) {
    console.log("[sendInviteEmails], ", emails);
      if (emails !== void 0) {
        console.log("[sendInviteEmails] calling meteor method: sendEmail");
        return Meteor.call("sendEmail", emails, "email@gmail.com", "test", "test");
      }
  },
  sendEmail: function(to, from, subject, text) {
    this.unblock();
    Email.send({
      to: to,
      from: from,
      subject: subject,
      text: text,
    });
  },
});

我正在从客户端调用sendInviteEmail(将检查它在服务器上的有效性)并将该数据传递给sendEmail(这就是为什么我目前有一点冗余)。我的代码基本上来自docs.meteor.com,所以我想知道为什么这会出现光纤问题。

谢谢

你的代码对我来说很好。我直接复制了你的代码并调用

Meteor.call("sendInviteEmail", "my.email@mydomain.com")

,一切正常。

我认为你可能没有正确安装email。如果你从npm包中运行async函数,你会得到这个错误。要安装email包,需要运行

meteor add email

我猜你把它添加为一个npm包或什么的。我希望这对你有帮助。

如果你对你得到的错误感兴趣,我有很多问题,同样的错误,当我建立一个应用程序,听取postresql触发器。我使用pg包从大气(https://atmospherejs.com/package/postgresql),但要让它工作,我需要在流星的环境中使用Meteor._wrapAsync包装的功能。下面是一个例子:

// Wrap connect function
pg.wrapped_connect = Meteor._wrapAsync(pg.connect.bind(pg));
// Run connect as usual
pg.wrapped_connect(conParams, function(err, client) {
  ...
});

最新更新