Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor.call和Meteor.methods不适用于移动设备(iOS),但可在web和iOS模拟器上完美运行_Javascript_Meteor_Meteor Methods - Fatal编程技术网

Javascript Meteor.call和Meteor.methods不适用于移动设备(iOS),但可在web和iOS模拟器上完美运行

Javascript Meteor.call和Meteor.methods不适用于移动设备(iOS),但可在web和iOS模拟器上完美运行,javascript,meteor,meteor-methods,Javascript,Meteor,Meteor Methods,虽然我还没有在安卓系统上尝试过,但是在移动设备上特别是在iOS上构建应用程序时,Meteor.call和.methods不起作用。在我以前的项目中,这种情况没有发生。我试着与另一个应用程序进行比较,实际上,我在这个新应用程序中重复使用了另一个应用程序,但它就是不起作用。此外,在web和iOS模拟器上,一切都运行良好。有人请帮忙 导入/startup/server/methods.js import { HTTP } from 'meteor/http'; import { Meteor } fr

虽然我还没有在安卓系统上尝试过,但是在移动设备上特别是在iOS上构建应用程序时,Meteor.call和.methods不起作用。在我以前的项目中,这种情况没有发生。我试着与另一个应用程序进行比较,实际上,我在这个新应用程序中重复使用了另一个应用程序,但它就是不起作用。此外,在web和iOS模拟器上,一切都运行良好。有人请帮忙

导入/startup/server/methods.js

import { HTTP } from 'meteor/http';
import { Meteor } from 'meteor/meteor';

Meteor.methods({

    methodTrial: function(data) {
        console.log("Called methodTrial");
        return false;
    }

});
导入/startup/ui/pages/home.js

import './home.html';

import { Meteor } from 'meteor/meteor';

Template.payment.events({
    "click #test-method": (event) => {
        var data = {
            name : "Hello World"
        };
        Meteor.call('methodTrial', data, (error, result) => {
            console.log("Called 'methodTrial'");
        }
    }
});
导入/startup/server/index.js

import './methods.js';
server/main.js

import { Meteor } from 'meteor/meteor';

import '/imports/startup/server';

您的
'methodTrial'
Meteor方法仅适用于服务器

因此,您的客户机不运行该方法的任何存根/模拟,而完全依赖服务器响应向用户提供任何反馈

如果由于任何原因设备无法连接到服务器,客户端将无法触发服务器上的方法,并且它将永远不会收到任何响应

在开发过程中,一个常见的误解是,由于您的设备(无论是基于iOS还是基于Android的)连接到您的计算机(通过USB数据线),所以它连接到您的服务器。但实际上,这仅适用于应用程序部署(当您执行
meteor run ios设备
meteor run android设备
时)。安装并打开应用程序后,它需要通过WiFi网络连接到计算机本地服务器

见:

在开发过程中,[…]设备和运行meteor的计算机必须是同一WiFi网络的一部分,并且网络配置不应阻止设备到达服务器。您可能必须更改防火墙或路由器设置以允许此操作(无客户端隔离)

meteor run
将尝试自动检测运行该命令的计算机的本地IP地址。如果此操作失败,或者您希望移动应用程序连接到其他服务器,则可以使用
--mobile server
选项指定地址

常见的错误有:

  • 未在设备上启用WiFi
  • 不允许设备连接到WiFi网络(路由器上的MAC地址过滤等)
  • 不允许在开发计算机上传入IP请求

您是否在设备上作为调试运行?(即meteor run ios设备)如果是,您是否检查过您的设备是否可以通过WiFi连接到您的本地服务器?@ghybs-Hmm我不确定“调试”是否正确,但我正在通过ios设备运行它。我确信这两个设备都连接在同一个网络上,并且连接在正确的ip地址上。如果模拟器根本不工作,它就不会在模拟器上工作。模拟器不必通过WiFi,而你的设备必须通过WiFi。当然,可能值得确保该设备可以正确地通过@ghybs连接到您的服务器。如果它无法连接,那么我该怎么办?如果这是问题的根本原因,您是否尝试过?