【问题标题】:Unable to invoke Meteor.call from Client in MeteorJS?无法从 MeteorJS 中的客户端调用 Meteor.call?
【发布时间】:2013-02-13 17:07:56
【问题描述】:

使用流星 0.5.7 - 以缔约方为例 - 创建客户端、服务器文件夹,并在其中放置相应的 client.js 和 server.js 文件。我已自动发布、删除不安全并添加了电子邮件包。我无法启动 Meteor.call,调试表明它被绕过了,我松散地遵循这个 - http://goo.gl/MV26m - 我仍然不明白。

// server.js
Meteor.startup(function () {
  process.env.MAIL_URL = '...'; // using mailgun URL
});

Meteor.methods({
   call_me: function (options) {
     var options = options || {};
     Email.send({
      from: options.from,
      to: options.to,
      replyTo: options.from || undefined,
      subject: options.subj,
      text: options.msg,
     });
   },
});

// client.js
Template.form.events({
 'click .submit' : function (event, template) {
   var from = template.find("#from").value;
   var to = template.find("#to").value;
   var subj = template.find("#subj").value;
   var msg = template.find("#msg").value;
   var options = { from: from, to: to, subj: subj, msg:msg };

   Meteor.call('call_me', options, function(err, data) {
    if (err)
     console.log(err);
   });
 }
});

// client.html - the gist of it
<body>
  {{> page }}
</body>
<template name="page">
  {{> form }}
</template>
<template name="form">
  <form ....
</template>

最后,我实际上有 Meteor.methods({...});坐在客户端/服务器文件夹之外的 model.js 文件中 - 它仍然没有触发电子邮件,或调用 Meteor.call 方法。我有点想把头放在前面提到的附加链接中的存根概念上,将调用包装在一个函数中并调用它,但我仍然没有得到任何活动。感谢您的任何建议。

【问题讨论】:

  • 你在localhost上开发吗?如果是这样,Email.send 不会发送电子邮件,它会将电子邮件打印到您的控制台(例如终端)
  • 我正在本地主机上开发,但电子邮件没有打印到控制台(术语/网络) - 我放置了调试器;在 Meteor.call 函数中,它甚至没有调用它。 Hrm,Chrome 检查没有提供错误,但 Firefox 提供了错误 - “[17:30:25.585] POST localhost:3000/sockjs/566/hkevinpk/xhr_send [HTTP/1.1 404 Not Found 2ms]” - 尚不知道这意味着什么,但也许是一个线索我会进一步研究。
  • 你的 Meteor 调用和 Meteor.methods 看起来是正确的。请在 github 上发布带有实际文件的要点,我们将能够提供更好的帮助。
  • 这是我的要点,忽略包中的额外内容 - gist.github.com/anonymous/5053919。我现在得到 [22:11:53.834] 错误:INVALID_STATE_ERR @ localhost:3000/packages/stream/… - 仍在本地主机上运行。
  • 尝试去掉&lt;form&gt;标签并评论Process.env.MAIL_URL。它对我有用。 &lt;form&gt; 可能正在由浏览器而不是由您的事件处理。

标签: meteor


【解决方案1】:

尝试了你的要点。删除&lt;form&gt; 标签并注释掉Process.env.MAIL_URL 做到了。 &lt;form&gt; 标签阻止事件触发按钮点击。

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2015-10-18
    相关资源
    最近更新 更多