客户端中的Meteor调用服务器方法获取404方法未找到错误

客户端中的Meteor调用服务器方法获取404方法未找到错误,meteor,Meteor,我是meteor的新手,在尝试调用客户机上的服务器方法时遇到了一个问题 // Client code Template.email.events({ 'click #test-button' : function(e, t) { Meteor.call('testMethod', function(err, response){ if (err) { alert("error: "+ err) } else{ a

我是meteor的新手,在尝试调用客户机上的服务器方法时遇到了一个问题

// 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";
    }
  });
}

当我点击按钮时,我得到一个错误:methodnotfound404。我试图将服务器方法放在Meteor.startup中,但仍然收到相同的错误。我缺少什么?

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


/client目录中的代码根本不会在服务器上运行,因此Meteor.isServer将始终为false,并且该方法将永远不会在客户端或服务器上创建。看起来您的代码只在客户端运行。将
if(Meteor.isServer)
中的块移动到项目的
/server
目录中的javascript文件中


/client目录中的代码根本不会在服务器上运行,因此Meteor.isServer将始终是false,并且该方法将永远不会在客户端或服务器上创建

Meteor.methods({…})放在Meteor.isServer()之外那么Meteor将检测您的方法。

Meteor.methods({…})
Meteor.isServer()中取出
然后Meteor将检测您的方法。

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

server
  |----- dht-setup.js
  |----- methods.js
然后,dht安装程序看不到methods.js方法。而是更改文件名:

server
  |---- _methods.js
  |---- dht-sensor.js
404未找到,已修复。我在客户端发现了同样的问题,当a希望将函数与模板分离时,例如,将D3js函数与模板分离。您可能需要使用“下划线”字符“\”确保按字母顺序加载的顶部。
考虑到这一点,导致示例工作很好,因为方法在Stututu.js中定义,在LeAT字母表中。

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

server
  |----- dht-setup.js
  |----- methods.js
然后,dht安装程序看不到methods.js方法。而是更改文件名:

server
  |---- _methods.js
  |---- dht-sensor.js
404未找到,已修复。我在客户端发现了同样的问题,当a希望将函数与模板分离时,例如,将D3js函数与模板分离。您可能需要使用“下划线”字符“\”确保按字母顺序加载的顶部。
考虑到,导致示例工作良好,因为方法是在Stututu.js中定义的,在LeAT字母表中。

对不起,对于已故的答复。当我将代码移动到服务器文件夹时,它会起作用。然而,Meteor.isServer的意义是什么呢?如果将代码放在根目录中(同时在服务器和客户端上运行),那么它用于区分在何处运行代码。有时,您可能希望共享相同的代码,但在服务器和客户端之间有一些小的调整。但这并不太明智,因为服务器端代码的副本将被发送到客户端,但不会运行。很抱歉,回复太晚。当我将代码移动到服务器文件夹时,它会起作用。然而,Meteor.isServer的意义是什么呢?如果将代码放在根目录中(同时在服务器和客户端上运行),那么它用于区分在何处运行代码。有时,您可能希望共享相同的代码,但在服务器和客户端之间有一些小的调整。但这并不太明智,因为服务器端代码的副本将被发送到客户端,但不会运行。