虽然我还没有在Android上尝试过,但是在iOS上专门为移动设备构建应用程序时,Meteor.call和.methods并不完全确定如何放置这个。在我以前的项目中,这不会发生。我尝试与其他应用程序进行比较,实际上,我重新使用了另一个应用程序,但它只是不起作用。此外,一切都在网络和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 /页/ 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';
答案 0 :(得分:0)
您的'methodTrial'
Meteor方法仅限服务器。
因此,您的客户端不会运行该方法的任何存根/模拟,并且完全依赖服务器响应来向用户提供任何反馈。
如果由于任何原因设备无法连接到您的服务器,客户端将无法在服务器上触发该方法,并且它将永远不会收到任何响应。
开发过程中常见的误解是因为您的设备(无论是基于iOS还是基于Android)连接到您的计算机(通过USB数据线),它连接到您的服务器。但实际上这仅适用于应用部署(当您执行meteor run ios-device
或meteor run android-device
时)。安装并打开应用程序后,需要通过WiFi网络连接到计算机本地服务器。
请参阅Meteor Guide > Build > Mobile > Developing on a mobile:
在开发过程中,您运行的设备和计算机
meteor
必须是同一WiFi网络的一部分,并且网络配置不应阻止设备到达服务器。您可能必须更改防火墙或路由器设置以允许此操作(无客户端隔离)。
meteor run
将尝试自动检测运行该命令的计算机的本地IP地址。如果此操作失败,或者您希望移动应用程序连接到其他服务器,则可以使用--mobile-server
选项指定地址。
常见的错误是: