【问题标题】:Difference between export SOME_ENV_VAR=KEY and SOMEOTHER_ENV_VAR=KEY in dotenv?dotenv 中 export SOME_ENV_VAR=KEY 和 SOMEOTHER_ENV_VAR=KEY 的区别?
【发布时间】:2019-02-13 09:34:44
【问题描述】:

我对 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(不受限制)安全地导出到我的项目中。有没有我可能遗漏的问题?

【问题讨论】:

    标签: javascript node.js dotenv


    【解决方案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:
    

    【讨论】:

      猜你喜欢
      • 2011-04-20
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 2013-12-02
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多