在dotenv中导出SOME_ENV_VAR = KEY和SOMEOTHER_ENV_VAR = KEY之间的区别?

时间:2018-09-08 06:11:04

标签: javascript node.js laravel-dotenv

我对Node.js比较陌生。我想将环境变量从.env文件导出到我的javascript文件。为了做到这一点,我正在使用dotenv。

我应该使用哪种方法将环境变量导出到我的主要javascript文件(say-app.js)

export GEOCODER_API_KEY= someKeyXYZ // inside .env file

GEOCODER_API_KEY_1 = someKeyXYZ // inside .env file

要注意的一件事是,在app.js中的console.log(process.env)上,GEOCODER_API_KEY_1显示为env变量,但不是GEOCODER_API_KEY吗?这是为什么。那么第一个用途是什么,因为它不可访问? 更令人困惑的是:

var options = {
  provider: 'google',
  httpAdapter: 'https',
  apiKey: process.env.GEOCODER_API_KEY,
  formatter: null
};  // this works

... // some javascript
console.log(process.env.GEOCODER_API_KEY) //SHOWS UNDEFINED

我基本上想将API_KEY(不受限制)安全地导出到我的项目中。有没有我可能会错过的收获?

1 个答案:

答案 0 :(得分:1)

.env文件中编写可移植变量声明的正确方法是:

FOO=BAR

这是-使用dotenv之类的dotenv实现时。

require('dotenv').config();

console.log(process.env);

在Unix / Bash环境(您可能在野外看到的情况)中在.env中使用export时-采购文件将产生differences,涉及声明的变量的范围:

# .env
export GEOCODER_API_KEY=someKeyXYZ
GEOCODER_API_KEY_1=someKeyXYZ
# main.sh

#!/bin/bash

. ./.env

./subprocess.sh
# subprocess.sh
#!/bin/bash

echo "GEOCODER_API_KEY": $GEOCODER_API_KEY

echo "GEOCODER_API_KEY_1": $GEOCODER_API_KEY_1
./main.sh
GEOCODER_API_KEY: someKeyXYZ
GEOCODER_API_KEY_1: