因为几天我对meteorjs和移动版本有一些问题。 3个不同的应用程序会出现此问题。
我使用np脚本和这种脚本构建应用程序:
#!/usr/bin/env bash
if [ -z "$npm_package_config_mongourl" ]; then echo "No mongourl config found in package.json"; else echo "set mongourl" && export MONGO_URL=$npm_package_config_mongourl; fi
if [ -z "$npm_package_config_mongooplogurl" ]; then echo "No mongooplogurl config found in package.json"; else echo "set mongooplogurl" && export MONGO_OPLOG_URL=$npm_package_config_mongooplogurl; fi
if [ -z "$npm_package_config_mailurl" ]; then echo "No mailurl config found in package.json"; else echo "set mailurl" && export MAIL_URL=$npm_package_config_mailurl; fi
if [ -z "$npm_package_config_rooturl" ]; then echo "No rooturl config found in package.json"; else echo "set rooturl" && export ROOT_URL=$npm_package_config_rooturl; fi
if [ -z "$npm_package_config_packagedirs" ]; then echo "No packagedirs config found in package.json"; else echo "set packagedirs" && export PACKAGE_DIRS=$npm_package_config_packagedirs; fi
if [ -z "$npm_package_config_mobileserver" ]; then echo "No mobile server config found in package.json (mobile app offline)" && export REBOLON_MOBILE_SERVER=""; else echo "set mobile server" && export REBOLON_MOBILE_SERVER=" --server=$npm_package_config_mobileserver"; fi
if [ -z "$npm_package_config_settingsfile" ]; then echo "No settings file found in package.json" && export REBOLON_SETTINGS=""; else echo "set settings" && export REBOLON_SETTINGS="--mobile-settings $npm_package_config_settingsfile"; fi
if [ -z "$npm_package_config_buildfolder" ]; then (
echo "set a build folder before running the build system!"
exit 1
); fi
meteor build $npm_package_config_buildfolder $REBOLON_SETTINGS $REBOLON_MOBILE_SERVER $*;
因此,一旦创建了所有env变量,流星二进制调用就像这样:
meteor build ../../build/mobile --mobile-settings ./settings.json --server=http://myserver:3000
然后我将应用程序注入android模拟器,然后打开一个chrom远程调试器。 然后我在模拟器中运行应用程序,我有奇怪的行为:
如果我查看调试器,我可以看到全局var meteor_runtime_config .ROOT_URL不是构建命令期间设置的那个:
{meteorRelease: "METEOR@1.2.1", PUBLIC_SETTINGS: Object, ROOT_URL: "http://10.0.2.2:3000", ROOT_URL_PATH_PREFIX: "", appId: "1rm26uv1lh7ui31i489b2"…}
问题也发生在另一个应用程序上,但在启动后几秒钟后也没有。在这个应用程序中,它发生在我通过应用程序使用相机时,当我选择照片然后它回到应用程序,但ROOT_URL变为http://10.0.2.2:3000
最后使用第三个应用程序,问题出现在我退出应用程序(或每个例子切换到智能手机主页)并且我回到应用程序。然后刷新,ROOT_URL是10.0.2.2:3000。
我没有任何线索可以理解这一点。 谢谢你的帮助。
答案 0 :(得分:1)
好的,所以我终于理解了我的错误: MeteorJs是一个完整的平台,一个应用程序可用于构建cordova应用程序,网站和服务器。 当您构建具有Android平台的应用程序时,您必须使用将用于DDP和缓存应用程序的服务器的完整uri指定--server参数(--server = http://youServerIp:Port) 然后,当您运行服务器时,不要忘记指定移动服务器参数,因为当将新版本的应用程序提供给智能手机时,它将用于配置Cordova应用程序( - mobile-server {{3 }})
注意一件事: *对于构建,有标志" ="像这样--server = http://yourServerIp:Port *而当你运行服务器时,没有像这样的标志--mobile-server http://youServerIp:Port
在我的情况下,构建很好,这解释了为什么在应用程序的第一次运行时我连接到服务器 所以这是服务器配置错误,因为我从未通过移动服务器参数。因此,当服务器发送新版本时,它没有发送服务器uri,因此cordova应用程序只考虑它是仅客户端应用程序。因此,当应用程序刷新时,它只会连接到它自己。
我现在修改了我的duckpate以修复我的start.sh脚本
答案 1 :(得分:0)
您是否尝试过指定服务器?例如:
--server=http://192.168.1.1:3000