我试着跟着教程,上面写着:
有几种方法可以加载凭据。 从环境变量加载, 从磁盘上的JSON文件加载, 关键字如下: USER_ID, USER_KEY ...这意味着如果您正确地设置了环境变量,您就可以 根本不需要在应用程序中管理凭据。
根据一些谷歌搜索,似乎我需要在process.env?我如何以及在哪里设置这些凭证?示例请。
我试着跟着教程,上面写着:
有几种方法可以加载凭据。 从环境变量加载, 从磁盘上的JSON文件加载, 关键字如下: USER_ID, USER_KEY ...这意味着如果您正确地设置了环境变量,您就可以 根本不需要在应用程序中管理凭据。
根据一些谷歌搜索,似乎我需要在process.env?我如何以及在哪里设置这些凭证?示例请。
当前回答
可以通过process global variable设置环境变量,方法如下:
process.env['NODE_ENV'] = 'production';
适用于所有平台。
其他回答
使用dotenv-webpack让您的生活更轻松。简单地安装它npm install dotenv-webpack——save-dev,然后在你的应用程序的根目录下创建一个。env文件(记得在你推送git之前把它添加到。gitignore中)。打开这个文件,设置一些环境变量,例如:
ENV_VAR_1=1234
ENV_VAR_2=abcd
ENV_VAR_3=1234abcd
现在,在你的webpack配置中添加:
const Dotenv = require('dotenv-webpack');
const webpackConfig = {
node: { global: true, fs: 'empty' }, // Fix: "Uncaught ReferenceError: global is not defined", and "Can't resolve 'fs'".
output: {
libraryTarget: 'umd' // Fix: "Uncaught ReferenceError: exports is not defined".
},
plugins: [new Dotenv()]
};
module.exports = webpackConfig; // Export all custom Webpack configs.
只有const Dotenv = require(' Dotenv -webpack');,插件:[new Dotenv()],当然还有模块。出口= webpackConfig;//导出所有Webpack配置。是必需的。然而,在某些情况下,您可能会得到一些错误。对于这些问题,你也有解决方案,这意味着你可以修复某些错误。
现在,你可以在任何地方使用process.env。ENV_VAR_1 process.env。ENV_VAR_2 process.env。应用程序中的ENV_VAR_3。
这取决于您的操作系统和shell
在linux上使用shell bash,你可以在控制台中创建这样的环境变量:
export FOO=bar
有关ubuntu环境变量的更多信息(例如):
ubuntu上的环境变量
创建一个名为local-env的文件,并用变量填充它
PORT=80
DB_NAME=foo
SOME_URL=example.com
现在这样运行node:
source ./local_env ; node index.js
很像其他答案,但没有任何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文件
如果你想要一个管理选项,试试envs npm包。如果设置了环境值,则返回环境值。否则,您可以指定一个默认值,该值存储在全局默认对象变量中(如果不在您的环境中)。
使用.env (" . ee-en-vee")或环境文件有很多好处。个人可以管理自己的配置。您可以使用自己的环境设置将不同的环境(dev、stage、prod)部署到云服务中。你可以设置合理的默认值。
在你的.env文件中,每一行都是一个条目,就像下面这个例子:
NODE_ENV=development
API_URL=http://api.domain.com
TRANSLATION_API_URL=/translations/
GA_UA=987654321-0
NEW_RELIC_KEY=hi-mom
SOME_TOKEN=asdfasdfasdf
SOME_OTHER_TOKEN=zxcvzxcvzxcv
您不应该在版本控制存储库中包含.env(将其添加到.gitignore文件中)。
要将.env文件中的变量导入到环境中,可以在启动应用程序之前使用bash脚本执行导出NODE_ENV=development的等效操作。
#!/bin/bash
while read line; do export "$line";
done <source .env
然后在你的应用javascript中:
var envs = require('envs');
// If NODE_ENV is not set,
// then this application will assume it's prod by default.
app.set('environment', envs('NODE_ENV', 'production'));
// Usage examples:
app.set('ga_account', envs('GA_UA'));
app.set('nr_browser_key', envs('NEW_RELIC_BROWSER_KEY'));
app.set('other', envs('SOME_OTHER_TOKEN));