【发布时间】: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/… - 仍在本地主机上运行。
-
尝试去掉
<form>标签并评论Process.env.MAIL_URL。它对我有用。<form>可能正在由浏览器而不是由您的事件处理。
标签: meteor