0

不完全确定如何放置,但 Meteor.call 和 .methods 在专门在 iOS 上的移动设备上构建应用程序时不起作用,尽管我还没有在 Android 上尝试过。在我之前的项目中,这不会发生。我尝试与另一个应用程序进行比较,实际上,我在这个新应用程序中重用了另一个应用程序,但它只是不起作用。此外,一切都在 web 和 iOS 模拟器上运行良好。有人请帮忙。

导入/启动/服务器/methods.js

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

Meteor.methods({

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

});

导入/启动/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'");
        }
    }
});

进口/启动/服务器/index.js

import './methods.js';

服务器/main.js

import { Meteor } from 'meteor/meteor';

import '/imports/startup/server';
4

1 回答 1

0

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

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

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

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

请参阅Meteor Guide > Build > Mobile > Developing on a mobile

在开发过程中,[…] 设备和您运行的计算机meteor必须属于同一个 WiFi 网络,并且网络配置不应阻止设备访问服务器。您可能必须更改防火墙或路由器设置以允许这样做(无客户端隔离)。

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

常见的错误是:

  • 未在设备上启用 WiFi。
  • 不允许设备连接到 WiFi 网络(路由器上的 MAC 地址过滤等)
  • 不允许在开发计算机上传入 IP 请求。
于 2017-03-27T11:48:19.587 回答