Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js circleci-无法读取脚本中定义的环境变量_Node.js_Circleci - Fatal编程技术网

Node.js circleci-无法读取脚本中定义的环境变量

Node.js circleci-无法读取脚本中定义的环境变量,node.js,circleci,Node.js,Circleci,我编写了一个设置环境变量的脚本 export DB_HOST='127.0.0.1' export DB_USER='ubuntu' export DB_PWD='' export DB_NAME='circle_test' 我的圆圈是这样的 machine: timezone: Asia/Taipei services: - mysql dependencies: pre: - sudo apt-get update - nvm install 7.9

我编写了一个设置环境变量的脚本

export DB_HOST='127.0.0.1'
export DB_USER='ubuntu'
export DB_PWD=''
export DB_NAME='circle_test'
我的圆圈是这样的

machine:
  timezone: Asia/Taipei
  services:
    - mysql

dependencies:
  pre:
    - sudo apt-get update
    - nvm install 7.9 && npm install

test:
  pre:
    - source ./config/test_config.sh
    - sh ./config/test_config.sh
    - pwd
    - printenv
  override:
    - nvm use 7.9 && npm test
我的nodejs应用程序无法读取env变量,我也没有在printenv中看到

我不想将env变量直接写入circle.yml文件,因为我想让
prod\u config.sh
dev\u config.sh
动态更改

如何才能做到这一点?

每个单独的命令(以
-
为前缀的行)都在自己的shell中运行。这就是为什么您的源环境变量在以下命令中不存在的原因。我认为这有三种方式:

1) 在
circle.yml
中定义环境变量。我知道你说过你不想这样做,但这是迄今为止最简单、最清楚的方法

2) 可以使用source命令为需要变量的行添加前缀。例如:

test:
  override:
    - source ./config/test_config.sh; nvm use 7.9 && npm test
3) 利用多行YAML:

test:
  override:
    - >
      source ./config/test_config.sh
      nvm use 7.9 && npm test
4) 或者将所有命令放在其on Bash文件中,然后运行该脚本:

test:
  override:
    - ./all-commands-script.sh
-里卡多·费利西亚诺

开发者布道者,CircleCI

谢谢@FelicianoTech,我在CircleCI论坛上发布了同样的问题。抱歉再次打扰你。顺便说一句,能从circleci团队得到及时的回答真是太好了:)一点也不麻烦。在两地发帖都是有益的。您获得答案的机会加倍,加上堆栈溢出意味着未来用户对该问题的可见性更高。