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



我是meter的新手,在尝试调用客户端上的服务器方法时遇到了问题。

// 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中,但仍然得到相同的错误。我错过了什么?

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

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

Meteor.methods({...})Meteor.isServer()中取出,Meteor将检测到您的方法。

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

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

然后,dht安装程序看不到methods.js方法。相反,我更改了文件名:

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

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

相关内容

最新更新