MeteorJS Mobile 构建:rooturl 始终为 10.0.2.2:3000,而不是构建脚本期间指定的真实服务器

2023-12-07

几天来我在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。

我没有任何线索来理解这一点。 谢谢您的帮助。


好吧,我终于明白了我的错误: MeteorJs 是一个完整的平台,一个应用程序可用于构建 cordova 应用程序、网站和服务器。 当您构建具有 Android 平台的应用程序时,您必须指定 --server 参数以及将用于 DDP 和缓存应用程序的服务器的完整 uri (--server=http://youServerIp:端口) 然后,当您运行服务器时,您一定不要忘记指定移动服务器参数,因为当新版本的应用程序将提供给智能手机时,它将用于配置 Cordova 应用程序(--mobile-serverhttp://你的服务器IP:端口)

注意一件事: * 对于构建,有符号“=”,如下所示 --server=http://youServerIp:端口* 而当你运行你的服务器时,没有这样的标志 --mobile-serverhttp://你的服务器:端口

就我而言,构建良好,这解释了为什么在第一次运行应用程序时我连接到了服务器 所以这是服务器配置错误,因为我从未传递移动服务器参数。因此,当服务器发送新版本时,它不会发送服务器 uri,因此 cordova 应用程序仅认为它是仅客户端应用程序。因此,当应用程序刷新时,它只连接到它自己。

我现在已经修改了我的样板文件来修复我的 start.sh 脚本

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MeteorJS Mobile 构建:rooturl 始终为 10.0.2.2:3000,而不是构建脚本期间指定的真实服务器 的相关文章

  • Mongodb 聚合使用 $group 两次

    我在 mongo 中有一堆文档 其结构如下 id number 2 colour id name Green hex 00ff00 position id name Defence type position ageGroup id nam
  • 带有流星的网站图标?

    我正在尝试将网站图标加载到我的 Meteor 项目中 但无法让它工作 我尝试使用this https stackoverflow com questions 20054788 how to load a favicon with meteo
  • cordova添加平台android和iOs后并不总是添加插件

    我需要跑ionic platform add android iOs几次就能得到想要的结果 有时插件会在第一次运行后添加 但通常我必须清除插件和平台目录并重新运行添加平台循环几次 直到所有插件都添加到 android 文件夹中 其他人是否遇
  • 错误:Phonegap 中的白名单拒绝

    我是移动开发新手 我正在使用 Phonegap Cordova 创建跨平台应用程序 我的代码在 Android 上运行良好 但当我将其移植到 iPhone 时 它 显示错误 143 2003 ERROR whitelist rejectio
  • Cordova 4.3.0 - 构建命令返回错误无法找到模块“Q”

    将 cordova 更新到版本 4 3 0 后 命令 cordova build 返回以下错误 module js 340 throw err Error Cannot find module Q at Function Module re
  • 使用 WL.Client.reloadApp 重新加载应用程序时是否会调用 wlcommoninit

    使用 WL Client reloadApp 重新加载应用程序时 是否会调用 wlcommoninit 我在混合应用程序中有用户注销功能 注销后 将调用 WL Client 的 reloadApp 方法 重新加载后 似乎没有调用 wlcom
  • 使用 Meteor 中的 D3 访问 csv 文件

    我已经使用 D3 成功渲染了一个 HTML 表格 显示了 csv 文件中的数据 但是当我将相同的代码移入 Meteor 项目时 我遇到了问题 传递到 d3 csv 回调中的数据对象一次拾取 HTML 文件 1 行 而不是 csv 数据 仅当
  • 从设备读取 ionic www/config.xml 文件

    我在从 Android 设备读取 www config xml 文件时遇到问题 我尝试了两种不同的方法 首先 我尝试使用另一个线程中推荐的 http 服务 当这不起作用时 我尝试使用 Cordova 文件插件 我这样做的原因是尝试从应用程序
  • PhoneGap/Cordova:如何使用cookies(iOS)?

    我有一个适用于 iOS 的 PhoneGap Corodova 项目 在 iOS 模拟器上构建时 我使用了 Jquery Cookies 它们很好 但是 既然我的设备上有该应用程序用于测试 它们就不再工作了 我猜这只是 iOS 不支持的东西
  • 为 Meteor 数据创建编号列表

    有没有办法获取 Meteor 集合中项目的编号列表的 编号 我知道我可以在 html 中做到这一点 但我觉得如果我可以在 spacebars 中放置一些东西 那么样式会更容易 如果我可以使用更好的术语 请告诉我 像这样的东西 前 20 部电
  • 使用 PhoneGap 使 Android 应用程序易于访问(对于残障人士)

    有人有过使用 PhoneGap 使 Android 应用程序可访问的经验吗 至少我们需要使我们的应用程序符合第 508 条规定 我尝试实现一些标准的辅助功能 文本框标签 向 div 添加标题属性等 但是 当在 Android 中使用 Tal
  • 来自 HTML5 的 Phonegap Bonjour/Zeroconf 或 Websocket IP 发现

    我正在尝试实现一个 Phonegap HTML5 应用程序 该应用程序连接到 Websocket 服务器 在嵌入式设备中运行 也有 Bonjour 服务 以在家庭网络内交换数据 我想知道使用 Phonegap 检测服务器 IP 的最佳方法
  • PickContact 需要 android.permission.READ_CONTACTS 或 grantUriPermission()

    首先一些信息 我首先在 Cordova 中创建了该应用程序 请参阅Cordova 权限需要 android permission READ CONTACTS 或 grantUriPermission https stackoverflow
  • Meteor 的不同数据库和前端

    假设我想在 Meteor 的后端使用与 Mongo 不同的数据库 并且还想在前端使用像 D3 js 这样的可视化库 目前可能吗 如果不自己添加的话 会有多复杂 谢谢 https github com meteor meteor tree m
  • Phonegap - navigator.app.backHistory() 不适用于 HTML 后退按钮

    在我的应用程序中 我使用phonegap 2 6 对于后退按钮 我使用以下函数 document addEventListener backbutton onBackKeyDown false function onBackKeyDown
  • 无法实例化接收器 com.parse.GcmBroadcastReceiver

    我正在编写一个使用 GCM 通知和解析推送的离子应用程序 这个应用程序正在使用这些插件 com ionic keyboard 1 0 3 Keyboard com phonegap plugins PushPlugin 2 4 0 Push
  • SQLite中的ROWID是自动设置的吗?

    所以 我在 Ionic 上有这个应用程序 它使用SQLite ngCordova 插件 https github com litehelpers Cordova sqlite storage用于内部存储 在其上 我使用以下命令创建一个表 d
  • handlebars:如何访问数组?

    我有以下简化文件 channel Channelname users userId 1 userId 2 userId 3 我如何访问 userId each 像这样循环 each channels channel each channel
  • 在 Cordova 应用程序中获取额外功能

    我们有两个 Android 应用程序 一个使用本机 Java 实现 另一个使用 Ionic 编写 Ionic 应用程序启动我的应用程序 这是使用灯插件 https github com lampaa com lampa startapp 我
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un

随机推荐

  • 使用远程计算机通过 JupyterLab 打开网站(类似于代理)

    我通过连接SSH到正在运行的远程计算机JupyterLab 当我在中运行以下代码时JupyterLab我看到我的本地计算机的 IP 地址 from IPython display import IFrame IFrame src https
  • 如何在 Android 中的列表视图中显示 Dropbox 文件?

    我已经在这里浏览答案有一段时间了 并在我的代码中使用了大部分答案 但它似乎仍然不起作用 我只想显示 Dropbox 帐户中内容的列表视图 并为用户提供下载文件 文件夹的选项 我的 MainActivity 过去常常在打开后立即崩溃 用处理
  • 如何使用 CURL 请求构建、准备和设置 JWT 授权承载令牌

    为了发送和接收授权持有人 我确实阅读了此内容使用 cURL 设置 Bearer 令牌的正确方法和这个如何正确使用 Bearer 代币 这是我的代码 url http www example com phpinfo php data arra
  • 从不可变类型继承[重复]

    这个问题在这里已经有答案了 我想知道继承是如何运作的int list string和其他不可变类型 基本上我只是继承一个这样的类 class MyInt int def init self value 我似乎无法弄清楚 如何设置像它所设置的
  • DataGridView 的自定义单元格绘制的文本溢出

    这是我的细胞绘画方法 DataGridView grid DataGridView sender if e RowIndex 1 e ColumnIndex 1 return if grid Rows e RowIndex Cells e
  • XAML 数据绑定类单例 MVVM 对象

    NOTES 我是一个菜鸟 有时我会陷入简单和 或愚蠢的想法 这就是其中之一 我了解了数据绑定的一般概念 我已经浏览了网上的一些教程 并通过大量文本在谷歌上搜索了几个小时 这只是让我有点困惑 PROBLEM 我正在尝试Windows Phon
  • 输入“=”作为单元格中的第一个字符

    我有一个正在运行的 VBA 宏 并且通常需要将 作为单元格中的第一个字符 单元格中填充有 Domestic Domestic 等值 现在 我将 替换为 IS 作为快速修复 但如果我可以保留等号 我希望它能够与使用 等符号的单元格保持一致 当
  • 使用 GWT 上传前检查文件大小

    我正在使用 FormPanel 将文件上传到服务器 我想做的是在上传之前确保文件大小小于给定大小 例如 10MB 在服务器端 我有一个 javax servlet http HttpServlet 我在其中重写 doPost 这里 Http
  • Golang 依赖管理最佳实践

    在Golang中 我们可以指定GitHub上的开源库作为依赖项 例如 import github com RichardKnop somelibrary 这将尝试根据您的 Go 版本查找分支 如果我理解正确的话 默认为 master 因此无
  • 在php中写入exif数据

    我正在尝试创建一个网站 可以在其中添加和修改 JPEG 文件中的元数据 有没有一种方法可以让我以相当简单的方式写入 exif 数据 我见过一两个例子 但它们太复杂 在我给出的时间范围内无法掌握 我了解 IPTC 并且我知道可以将元数据添加到
  • 查看 div 是否包含一个或多个输入的单词(Javascript)

    我想检查是否有任何 div 包含在输入字段中输入的所有单词 然而 目前我陷入了这样一种情况 一旦输入空格 它就会重新开始 因此有点像 OR 运算符而不是 AND 运算符 有人可以把我推向正确的方向吗 多谢 这是我到目前为止所拥有的 div
  • Python:如何在Python中运行嵌套并行进程?

    我有一个数据集df交易者的交易 我有 2 个级别的 for 循环 如下所示 smartTrader for asset in range len Assets df df df Assets asset I have some more c
  • 简单的 Ajax/Codeigniter 请求

    我在使用 ajax 和 codeigniter 时遇到一些问题 我已经发布了另一个问题 问题链接 我以为我解决了它 但我没有 所以我要求某人用 ajax codeigniter 编写简单的代码 这将在点击时增加 div span 内的数字
  • 类组件内的react-router-dom useParams()

    我正在尝试加载基于react router dom 路由的详细信息视图 该路由应该获取URL 参数 id 并使用它来进一步填充组件 我的路线看起来像 task id我的组件加载得很好 直到我尝试从 URL 中获取 id 如下所示 impor
  • 使用 try/catch 无意中拦截 Mnesia 的事务重试会导致各种奇怪的情况

    因此 我在一次事务中对记录集进行 CRUD 操作时遇到了各种麻烦 这导致我在这里发布两个问题 Trouble and 更多麻烦 However 我认为这两个问题都是由以下原因造成的 在我的事务中 我将 mnesia writes reads
  • Magento 使用安装脚本添加属性

    我遵循了一些教程并编写了这段代码 这是install 0 1 0 php installer this installer gt startSetup allowCP array group gt Prices type gt text a
  • 升级 pip 失败,并因 sys.stderr.write(f"ERROR: {exc}") 导致语法错误

    在使用 box Bento centos 7 的新 Vagrant VM 上 以下命令损坏了我的 pip 安装 yum update yum install epel release y yum install python pip y u
  • 插入表情符号不适用于 spring-boot 和 MariaDB

    我想在 mariaDB 数据库中插入像 这样的表情符号 但我总是收到 sql 错误 这是堆栈跟踪 12 01 2018 16 01 44 466 Executor Migration 1 WARN o h e jdbc spi SqlExc
  • 为什么 strcpy 没有分段错误? [复制]

    这个问题在这里已经有答案了 可能的重复 未定义 未指定和实现定义的行为 这应该是段错误 为什么不呢 include
  • MeteorJS Mobile 构建:rooturl 始终为 10.0.2.2:3000,而不是构建脚本期间指定的真实服务器

    几天来我在meteorjs和移动构建方面遇到了一些问题 3 个不同的应用程序均出现此问题 我使用 np 脚本和此类脚本构建应用程序 usr bin env bash if z npm package config mongourl then