【问题标题】:How can I use System Environment Variables in Angularjs Protractor?如何在 Angularjs Protractor 中使用系统环境变量?
【发布时间】:2026-01-06 06:25:01
【问题描述】:

我的计划是将用户名和密码存储为系统环境变量,并在 Angularjs Protractor 配置文件中引用它们。我在/etc/environment 中定义了变量。这是我迄今为止尝试过的:

params: {
  login: {
    user: $E2E_USER,
    pass: $E2E_PASS
  }
}

我也试过这个:

params: {
  login: {
    user: process.env.E2E_USER,
    pass: process.env.E2E_PASS
  }
}

任何帮助将不胜感激!

【问题讨论】:

  • 我模拟了您的第二种方法(也用于github.com/angular/protractor/blob/master/spec/ciConf.js)并且效果很好——您在使用process.env.E2E_USER 等时遇到了哪个错误?
  • 你也可以启动node命令行并检查console.log(process.env)给你的列表——看看E2E_USERE2E_PASS是否真的存在于你的环境中。
  • process.env.E2E_USERundefiend。当我打印process.env 时,我在列表中看不到E2E_USER。我在/etc/environment 中定义了变量,它应该在其他地方吗?谢谢!
  • 我会选择 export 你找到自己的方式。一切都好:)

标签: javascript node.js angularjs protractor


【解决方案1】:

你必须在 NodeJS 中使用process.env.YOUR_ENV,例如在 onPrepare 函数中,而不是直接在 params 中:

exports.config = {
    onPrepare: function() {
        //load env variables for testing
        if (typeof process.env.URL !== "undefined") {
            browser.baseUrl = process.env.URL;
            console.log('Base URL = ' +process.env.URL);
        }
},
params: { ...

【讨论】:

  • 我正在尝试使用 angular2 和量角器来实现相同的目标,但没有运气。当我控制台日志process.env 时,我看不到任何环境变量。我该如何解决我的问题??
【解决方案2】:

我使用了export E2E_USER=username,并且成功了。

【讨论】:

  • 我可以澄清一下:process.env.E2E_USER 有效。此答案中的 export 命令仅设置环境变量 E2E_USER。我想当 OP 提出问题时,变量没有设置。