【问题标题】:Meteor.http method is undefined on server?Meteor.http 方法在服务器上未定义?
【发布时间】:2012-05-03 02:01:06
【问题描述】:

所以,我正在尝试编写一个进行 http 调用的方法。当我运行该方法时,我收到以下错误:

调用方法“上传”类型错误时出现异常:无法调用未定义的方法“调用”

代码如下:

客户:

console.log(Meteor.call('upload', f, content));

服务器:

Meteor.methods({
  upload: function(file, content) {
    this.unblock();
    Meteor.http.call("PUT", "http://blah");
  }
});

更新:问题解决了,原来我必须启用包:meteor add http

【问题讨论】:

  • 表达式 Meteor.http 的计算结果为 undefined ...问题/问题在哪里?一个问题是:“为什么 Meteor.http 不是一个函数?”或一些这样的。这只是调试。)
  • 您的浏览器控制台有错误吗?
  • 不,除了上面我包含的那个是服务器输出的,没有其他错误
  • @MarkF 要么 1) API 是骗子 2) Meteor(或正确版本)未正确加载 3) 稍后将 Meteor.http 设置为未定义。在 web/JS 控制台中尝试:Meteor.http undefined 所以......为什么?它是在哪里定义的?

标签: javascript http meteor


【解决方案1】:

您只需要通过在项目的命令行上运行它来添加 HTTP 包:

流星添加http

【讨论】:

  • 试过这个......仍然给我错误 Meteor.http 未定义。
【解决方案2】:

您还需要使用 Meteor.call 客户端进行回调。

来自文档:

在客户端,如果你不传递回调并且你不在存根中,调用将返回 undefined,你将无法获取方法的返回值。那是因为客户端没有纤程,所以实际上没有任何方法可以阻止远程执行方法。

所以你应该改变这个

console.log(Meteor.call('upload', f, content));

到这里

Meteor.call('upload', f, content, function(error, result){console.log(result);});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多