我在使用android,ios和iOS模拟器连接到我的服务器时遇到了一系列问题。经过几天的关闭再次开始寻找解决方法。我每次都靠近但仍然无法完全连接。我有Iron:Router,可以访问任何不需要登录的页面,但是一旦我尝试注册或登录它'冻结',并且在调试过程中它说它无法连接。
Meteor.startup(function() {
var theURL = "http://myUrl.com:3000";
if (process.env.NODE_ENV === "development") {
theURL = "http://101.ipaddress.0.0:3000";
}
Meteor.absoluteUrl.defaultOptions.rootUrl = theURL;
process.env.ROOT_URL = theURL;
process.env.MOBILE_ROOT_URL = theURL;
process.env.MOBILE_DDP_URL = theURL;
process.env.DDP_DEFAULT_CONNECTION_URL = theURL;
});
经过一些修补,之后我转发了CORS问题。我通过这样做解决了
在mobile-config.js
中App.accessRule('http://*');
App.accessRule('https://*');
然后这又带给我另一个与iOS安全传输相关的错误,这个错误来自xcode 8我相信吗?我通过
解决了这个问题在xCode中的信息选项卡:在App Transport Security下添加“允许任意加载”:“true”
我还找到了一个很好的小块来控制日志连接状态。
if(Meteor.isClient){
Meteor.autorun(function () {
var stat;
if (Meteor.status().status === "connected") {
stat = 'lime'
}else if (Meteor.status().status === "connecting") {
stat = 'yellow'
}else {
stat = 'red';
}
Session.set('status',stat);
});
}
console.log(Session.get('status'));
这与注册按钮相关联,每次点击它都会触发状态。它总是'红色'。
Safari调试器说我无法连接。
meteor run ios-device --mobile-server 101.ipaddress:3000
然后我点击运行按钮。我已经阅读了热代码推送问题,并且通常会删除'.meteor / local / bundler-cache'&& '科尔多瓦建造'
我遇到了障碍,并希望得到一些关于下一个解决方案的帮助/建议(或者我可能从根本上跳过一些非常烦人但同时又快乐的东西)。
Meteor版本尝试了1.2.1& 1.3 mup.json
{
// Server authentication info
"servers": [
{
"host": "101.ipaddress.0.1",
"username": "username",
//"password": "password",
// or pem file (ssh based authentication)
// WARNING: Keys protected by a passphrase are not supported
"pem": "ssh/directory",
"pem": "ssh/directory",
"env": {}
}
],
// Install MongoDB on the server. Does not destroy the local MongoDB on future setups
"setupMongo": true,
// Application name (no spaces).
"appName": "AppName",
// Location of app (local directory). This can reference '~' as the users home directory.
// i.e., "app": "~/Meteor/my-app",
// This is the same as the line below.
"app": "/directory/to/app",
// Configure environment
// ROOT_URL must be set to your correct domain (https or http)
"env": {
"PORT": 80,
"ROOT_URL": "http://domainNameURL.com",
"MOBILE_ROOT_URL": "http://domainNameURL.com"
},
// Meteor Up checks if the app comes online just after the deployment.
// Before mup checks that, it will wait for the number of seconds configured below.
"deployCheckWaitTime": 60,
// show a progress bar while uploading.
// Make it false when you deploy using a CI box.
"enableUploadProgressBar": true
}
答案 0 :(得分:1)
虽然我的回答可能无法解决问题的根源,但它有望帮助您完成调试过程。
显示当前连接状态的postet代码段不是被动的。 console.log(Session.get('status'));
不在被动上下文中,这意味着它不会更新Session变量的更改。这就是为什么它只记录初始值red
。
将代码更改为以下内容以使其成为被动的:
if(Meteor.isClient){
Meteor.autorun(function () {
var stat;
if (Meteor.status().status === "connected") {
stat = 'lime'
}else if (Meteor.status().status === "connecting") {
stat = 'yellow'
}else {
stat = 'red';
}
console.log('status', stat);
});
}
答案 1 :(得分:0)
我无法使用1.2.1版复制新版本的错误。
然而,可能会导致一些问题:
[ip]:[port] 不是我实际测试连接的方式。对我来说,构建应用程序并让它在设备和模拟器上运行的最成功的方法是
meteor build <directory> ios --mobile-server <ipaddress>
注意没有[port]。
当我为苹果构建时,我使用
meteor run ios-device --mobile-server 101.ipaddress.1
然后点击产品&gt;存档
部署我正在使用mupx mupx deploy
Meteor的部署/编译过程可能是一团糟,因为我第一次尝试上传apk时它给了我在mobile-config.js中设置的实际数字,即版本0.0.7,但之后每次尝试连接8在末尾。即如果我有0.0.1它是18,而0.0.2它是28.这甚至是
App.setPreference('android-versionCode', '7');
App.setPreference('android-targetSdkVersion', '23')
设置。这是令人失望的,因为它看起来像是一个快速构建的Web应用程序。我很高兴能在手机上测试它,以便遇到很多问题。
总结一下。建立了一个新的流星1.2应用程序。然后手动添加我的所有包。之后,我复制并粘贴了我的客户端,lib和服务器文件夹。我现在可以注册并登录,并使用上面的编码片段显示活动连接。