我面临一个非常复杂的案例,其中包含Meteor
,mupx
和ROOT_URL
环境变量。
我正在研究带有Facebook登录的React的meteor-1.2.1应用程序。在应用程序代码中设置ROOT_URL全局变量时,它在本地开发以及meteor run ios/android
上都可以正常工作。
然后我使用mupx
将应用程序部署到Digital Ocean服务器,并使用meteor build ./build --server=http://xxxxxx.com
指向Digital Ocean服务器为iOS和Android构建。它在网络浏览器中运行良好,但在通过iTunes或AppStore将我的应用程序安装到iOS后,应用程序在启动屏幕后立即陷入白屏,但仅在首次启动时。再一次,这种情况发生在仅在安装应用程序后立即。如果我关闭应用程序并再次重新打开它,它将正确加载并继续正常工作。 Android设备上也会发生同样的情况。
以下是我的文件:
**** settings.json ****
{
"rootUrl": "http://xxxxxx.com",
"facebook": {
"appId": "xxxxxxxxxxxxxxxxxxxxx",
"secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"loginStyle": "redirect"
},
}
**** mup.json ****
{
"servers": [
{
"host": "xxxxxx.com", // actual server
"username": "user",
"pem": "~/.ssh/pem.key",
"env": {}
}
],
"env": {
"PORT": 80,
"ROOT_URL": "http://xxxxxx.com"
},
"setupMongo": true,
"setupNode": true,
"nodeVersion": "0.10.40", // "0.10.43" for meteor-1.3
"setupPhantom": true,
"enableUploadProgressBar": true,
"appName": "xxxxxx",
"app": "../../app",
"deployCheckWaitTime": 60
}
**** lib/_global.js ****
ROOT_URL = Meteor.settings.rootUrl;
**** server/accounts.js ****
ServiceConfiguration.configurations.upsert(
{ service: "facebook" },
{
$set: {
appId: Meteor.settings.facebook.appId,
secret: Meteor.settings.facebook.secret,
loginStyle: Meteor.settings.facebook.loginStyle
}
}
);
我知道在这种情况下很难找到问题,但我猜这与Meteor
ROOT_URL
或mupx
有关。我花了很长时间进行调试,发现问题实际上是因为ROOT_URL
变量而发生的。
PS:你会问我为什么要在应用代码中设置这个全局变量?这是因为accounts-facebook
在成功登录后没有正确重定向,而是挂在空白的Facebook屏幕上。 Meteor - Facebook authorization simply isn't working
如果我将从应用内代码中删除ROOT_URL,则白屏问题会消失,但Facebook登录不会正确重定向。让我们假设Facebook使用Deauthorize Callback URL = http://xxxxxx.com/_oauth/facebook
正确设置。
PPS:尝试将应用更新为meteor v1.3-rc.13
。一样。
非常感谢任何帮助。