1

我是流星的新手,并且遇到了试图在客户端上调用服务器方法的问题。

// Client code 
Template.email.events({  
 'click #test-button' : function(e, t) {      
    Meteor.call('testMethod', function(err, response){
      if (err) {
        alert("error: "+ err)
      } else{
        alert("success")
      }
    });        
 }
})

// server code
if (Meteor.isServer) {

  Meteor.methods({
    testMethod: function () {
       return "success";
    }
  });
}

当我单击按钮时,出现错误:找不到方法 404。我试图将服务器方法放入 Meteor.startup 中,但仍然出现相同的错误。我错过了什么?

4

3 回答 3

11

看起来您的代码仅在客户端运行。将 中的块移动if (Meteor.isServer)到项目目录中的 javascript 文件中/server

目录中的代码/client根本不会在服务器上运行,所以Meteor.isServer永远false不会在客户端或服务器上创建该方法

于 2013-07-27T16:18:27.270 回答
0

放出然后 Meteor 会检测到你Meteor.methods({...})的方法。Meteor.isServer()

于 2016-02-10T12:37:04.420 回答
0

加上将方法放在服务器端(服务器根文件夹),我注意到字母名称对于加载三个调用方法很重要。当我有下一个结构时,我遇到了同样的问题

server
  |----- dht-setup.js
  |----- methods.js

然后,dht-setup 看不到 methods.js 方法。相反,我更改了文件的名称:

server
  |---- _methods.js
  |---- dht-sensor.js

404 未找到,已修复。当想要将函数与模板分离时,我在客户端发现了同样的问题,例如,将 D3js 函数与模板分离。您可能需要使用“下划线”字符“_”确保按字母顺序加载的顶部。考虑到这一点,因为示例工作正常,因为方法是在 STARTUP.JS 中定义的,至少是字母词。

于 2016-10-19T14:28:54.580 回答