gpt4 book ai didi

meteor - 调用方法 '' : Method not found [404]时出错

转载 作者:行者123 更新时间:2023-12-04 13:19:11 25 4
gpt4 key购买 nike

在Meteor中,我在客户端定义的每个方法都会遇到此错误:

Error invoking Method 'activeMenu': Method not found [404]

仅作为示例,在我的代码中,我已定义了此方法,如下所示:

/client/js/startup/methods.js
Meteor.methods({
...
activeMenu: function() {
if(Session.get('menu')) {
$('.menu').removeClass('active');
$('#' + Session.get('menu')).addClass('active');
}
},
...
});

它从两个地方调用-首次呈现应用程序时,以及路由器进行路由后:

client/js/rendered.js
Template.ApplicationLayout.rendered = function() {
Meteor.call('activeMenu');
}

/client/js/utils/router.js
Router.onAfterAction(function () {
Meteor.call('activeMenu');
});

每个调用都会引发错误。但是,该方法仍然有效,我得到了预期的结果,因此调用必须成功,但是仍然出现错误。这些方法仅在客户端运行,因为它们仅用于演示目的。我需要程序没有错误,因为我怀疑这是 spiderable无法正常工作的原因。

最佳答案

使用Meteor.methods时,只有 stub 方法,而服务器端则需要一个方法,而客户端端是可选的,可以模拟延迟补偿。

meteor 调用的工作方式是,当您运行一个调用时,它将立即触发客户端,以模拟一些UI效果,同时从服务器返回响应,然后触发服务器端调用。

它的存在是为了使您可以使用一种方法,使响应看起来是立即的,即使服务器实际上可能需要一些时间才能做出响应。

由于您没有相应的服务器端方法,因此当Meteor将调用发送到服务器时,它找不到它并以Method not found [404]错误响应

如果要使用仅客户端有效果的方法,则应改用标准js方法,而不使用var关键字以确保其全局范围(可以从其他客户端文件访问)

activeMenu = function() {
if(Session.get('menu')) {
$('.menu').removeClass('active');
$('#' + Session.get('menu')).addClass('active');
}
}

然后在您的其他代码中:
activeMenu()代替 Meteor.call('activeMenu');

关于meteor - 调用方法 '' : Method not found [404]时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27739206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com