我试着跟着教程,上面写着:

有几种方法可以加载凭据。 从环境变量加载, 从磁盘上的JSON文件加载, 关键字如下: USER_ID, USER_KEY ...这意味着如果您正确地设置了环境变量,您就可以 根本不需要在应用程序中管理凭据。

根据一些谷歌搜索,似乎我需要在process.env?我如何以及在哪里设置这些凭证?示例请。


当前回答

使用cross-env。这会让你免去很多头疼的事情

-S cross-env

cross-env PARAM=value node ./index.js

这通常适用于非凭证。比如证书和钥匙 最好不要存储硬编码的用户id和密码,而是使用不在repo和dotenv中的.env文件

其他回答

如果你正在使用visual studio代码调试功能,你可以添加"envFile": "${workspaceRoot}/。Env”启动配置。这样你就不用用dotenv了。

{
        "cwd": "${workspaceRoot}",
        "command": "npm start",
        "name": "Run be",
        "request": "launch",
        "type": "node-terminal",
        "envFile": "${workspaceRoot}/.env"
},

很像其他答案,但没有任何lib或(bash)导出。

我有一些加密的变量,然后我需要在飞行中生成它们。

神奇发生在set -a &&…&& set +a可以是一些内容或文件。

#!/bin/sh

set -a    
SOMEVAR_A="abcd"
SOMEVAR_B="efgh"
SOMEVAR_C=123456
set +a

# or
set -a && . ./file && set +a

我有一个docker-entrypoint.sh:

#!/bin/sh

node app/config/set-environment.js

ENVFILE=/tmp/.env

if [[ ! -f "$ENVFILE" ]] ; then
    echo "File $ENVFILE is not there, aborting."
    exit
fi

# here is where things happen
set -a && . $ENVFILE && set +a

if [ "${NODE_ENV}" = "development" ]; then
  npx nodemon app/server.js
else
  node app/server.js
fi

exec "$@"

而set-environment.js生成一个(tmp) .env文件

环境变量(在本例中)用于向应用程序传递凭据。USER_ID和USER_KEY都可以从process.env中访问。USER_ID和process.env。USER_KEY分别。你不需要编辑它们,只需要访问它们的内容。

看起来他们只是让你选择从任何一个进程加载你的USER_ID和USER_KEY。Env或磁盘上的某个指定文件。

现在,当您运行应用程序时,奇迹发生了。

USER_ID=239482 USER_KEY=foobar节点app.js

这将传递用户id 239482和用户密钥作为foobar。这适用于测试,但是对于生产,您可能需要配置一些bash脚本来导出变量。

可以通过process global variable设置环境变量,方法如下:

process.env['NODE_ENV'] = 'production';

适用于所有平台。

这取决于您的操作系统和shell

在linux上使用shell bash,你可以在控制台中创建这样的环境变量:

export FOO=bar

有关ubuntu环境变量的更多信息(例如):

ubuntu上的环境变量