排毒没有传入环境变量

Posted

技术标签:

【中文标题】排毒没有传入环境变量【英文标题】:Detox not taking passed in environment variables 【发布时间】:2021-11-16 07:58:17 【问题描述】:

我正在一个 react 本机应用程序上设置测试环境。最近,我的构建命令已停止包含我传递给它们的环境变量。

EMAIL=testemail@test.com PASSWORD=testpassword xcodebuild....

当应用程序运行时,process.env.EMAIL 返回 undefined,如果我记录 process.env 对象,则不会列出命令行中提供的 EMAIL、PASSWORD 或任何其他变量。

更新:这似乎确实是排毒/地铁的问题。这是应该接收传入的环境变量的地方,如in Detox's docs regarding mocking 所述,现在也被破坏了。

关于我所做的更改破坏了此功能的任何想法?

【问题讨论】:

【参考方案1】:

您不能将变量存储在 .env 文件中并在 react native 中直接使用 process.env 访问它们。

要实现这一点,您需要集成 react-native-config 库。

【讨论】:

谢谢。我已经考虑过这一点,但是为了我的测试脚本的目的,将它们作为 bash 变量从构建调用中传入要方便得多。 (在脚本的前面,我使用相同的变量通过配套的网络应用程序创建用户)这以前是有效的,所以我对寻找新解决方案的兴趣不如修复事情的兴趣。跨度> 我能知道你将这些 bash 变量传递到哪里吗?如果您可以更新整个脚本和流程以对整个事情有所了解,那就更好了。 当然。 bash 脚本提示输入 PLATFORM、TESTING_ENVIRONMENT、EMAIL、PASSWORD 的变量。存储后,这些变量会配置对我们的 Web 应用程序的调用以运行 rake 任务以创建新用户。一旦创建 EMAIL 和 PASSWORD 就被传递到 ios/android 的构建命令中,以便在 Detox 中作为用于登录和访问应用程序的字符串常量进行访问。变量的定义如上例,过去曾成功运行,但神秘地完全停止运行,并返回 undefined。 我认为这实际上可能是 detox/jest-circus/metro 的问题。 Node 接受 bash 变量并按预期将它们添加到 ENV。出于某种原因,他们没有从我的 shell 脚本中获取传入的变量。我不知道我可能会改变什么来影响这一点。【参考方案2】:

我想通了。我最近修改了我的 bash 脚本以读取变量值,然后将它们传递给构建调用。事实证明,这些需要在我调用脚本本身时传入。所以我通过将脚本嵌套在另一个读取变量然后适当地传递它们的脚本中解决了这个问题。

任何关于为什么这个脚本嵌套有效而不是单个脚本的解释肯定会受到赞赏。

【讨论】:

以上是关于排毒没有传入环境变量的主要内容,如果未能解决你的问题,请参考以下文章

postman 添加环境变量 并 读取变量 作为参数 传入,跑整个场景

Node.js 永远带有环境变量

如何为 AWS ECS 任务定义提供环境变量?

向Hive中传入变量的方式

PostMan设置环境变量保存登录Token

webpack指南命令行环境配置