几天来我在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 $*;
因此,一旦创建了所有环境变量,meteor 二进制调用将如下所示:
meteor build ../../build/mobile --mobile-settings ./settings.json --server=http://myserver:3000
然后我将应用程序注入 Android 模拟器并打开 chrome 远程调试器。
然后我在模拟器中运行应用程序,我有奇怪的行为:
- 首先,应用程序似乎运行良好并连接到服务器
- 几秒钟后,应用程序看起来正在刷新,然后连接到http://10.0.2.2:3000而不是原始服务器 uri
如果我查看调试器,我可以看到全局变量流星运行时配置.ROOT_URL 不是在构建命令期间设置的:
{meteorRelease: "[email protected]", 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。
我没有任何线索来理解这一点。
谢谢您的帮助。