私はチュートリアルに従おうとしています、そしてそれは言います:
「資格情報を読み込む方法はいくつかあります。
キーは次のとおりです。
USER_ID, USER_KEY
...これは、環境変数を正しく設定すれば、アプリケーションで資格情報を管理する必要がまったくないことを意味します。」
いくつかのグーグルに基づいて、私はprocess.env
に変数を設定する必要があるようです。これらの資格情報を設定する方法と場所はどこですか。例ください。
環境変数(この場合)は、資格情報をアプリケーションに渡すために使用されています。 USER_ID
とUSER_KEY
は、両方ともそれぞれprocess.env.USER_ID
とprocess.env.USER_KEY
からアクセスできます。編集する必要はありません。内容にアクセスするだけです。
USER_ID
またはUSER_KEY
またはディスク上の特定のファイルのどちらからprocess.env
とUSER_ID=239482 USER_KEY=foobar node app.js
をロードするかを選択できるだけのようです。
さて、あなたがアプリケーションを実行するとき、魔法が起こります。
__コード__
これはユーザーID 239482
とユーザーキーをfoobar
として渡します。これはテストには適していますが、実稼働環境では、おそらく変数をエクスポートするためにいくつかのbashスクリプトを構成することになります。
Dotenvパッケージを調べることを強くお勧めします。
https://github.com/motdotla/dotenv
これは@Benxaminからの回答内で提案されているライブラリに似ていますが、はるかにクリーンで、bashスクリプトを必要としません。また、コードベースが広く使用されており、よくメンテナンスされていることにも注目してください。
基本的にあなたは.envファイルを必要とします(あなたのgit/Mercurial/etcから無視されることを強くお勧めします):
FOO=bar
BAZ=bob
それから、あなたのアプリケーションエントリファイルに次の行をできるだけ早く入れてください。
require('dotenv').config();
ブーム。完了しました。 'process.env'は上記の変数を含みます。
console.log(process.env.FOO);
// bar
'.env'ファイルは必須ではないので、アプリケーションが存在しなくてもアプリケーションが倒れることを心配する必要はありません。
コマンドラインでenv値を指定するだけです
USER_ID='abc' USER_KEY='def' node app.js
次のようにプロセスグローバル変数を通じて環境変数を設定できます。
process.env['NODE_ENV'] = 'production';
すべてのプラットフォームで動作します。
管理オプションが必要な場合は、envs npmパッケージを試してください。設定されている場合は環境値を返します。それ以外の場合は、グローバルdefaultsオブジェクト変数に格納されているデフォルト値が自分の環境にない場合は、それを指定できます。
.env( "dot 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
をバージョン管理リポジトリにnot含める必要があります(それを.gitignore
ファイルに追加します)。
.env
ファイルから自分の環境に変数を取り込むには、アプリケーションを起動する直前にbashスクリプトを使用してexport 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));
それはあなたのオペレーティングシステムとあなたのシェルに依存します
シェルバッシュを含むlinuxでは、(コンソールで)次のような環境変数を作成します。
export FOO=bar
Ubuntuの環境変数についての詳細は(例えば):
Ctrlplusbが言ったように、packege dotenvを使用することをお勧めしますが、これを行うもう1つの方法はjsファイルを作成し、それをアプリケーションサーバーの最初の行に要求することです。
env.js:
process.env.VAR1="Some value"
process.env.VAR2="Another Value"
app.js:
require('env')
console.log(process.env.VAR1) // Some Value
ステップ1: 環境変数を適切なファイルに追加してください。たとえば、ステージング環境を.env.staging
と呼びます。これには、ステージング環境に固有の環境変数USER_ID
およびUSER_KEY
が含まれています。
ステップ2: package.json
ファイルに、以下を追加します。
"scripts": {
"build": "sh -ac '. ./.env.${REACT_APP_ENV}; react-scripts build'",
"build:staging": "REACT_APP_ENV=staging npm run build",
"build:production": "REACT_APP_ENV=production npm run build",
...
}
それから、このようにdeployスクリプトでそれを呼び出します。
npm run build:staging
超シンプルなセットアップと魅力のように動作します!
出典: https://medium.com/@tacomanator/environments-with-create-react-app-7b645312c09d
Windowsユーザー:注意してください!これらのコマンドはUnixに推奨されますが、Windowsでは一時的なものにすぎません。マシンを再起動するか、新しいターミナルシェルを起動するとすぐに、現在のシェルのみに変数が設定されます。
SET TEST="hello world"
$env:TEST = "hello world"
Windowsで永続的な環境変数を設定するには、代わりに次のアプローチのいずれかを使用する必要があります。
A)プロジェクトの.envファイル-これは最善の方法です。
プロジェクトフォルダールートに.env
ファイルを作成し、コンテンツを次のようにします:TEST="hello world"
そのファイルを読み取るノードコードを記述します。 dotenv(npm install dotenv --save
)をインストールしてから、ノードのセットアップコード中にrequire('dotenv').config();
を追加することをお勧めします。
process.env.TEST
Env-filesは、コードベースに持ちたくないAPIキーやその他の秘密を保持するのに適しています。必ず.gitignore
に追加してください。
B)Powershellを使用-これにより、他の端末でアクセス可能な変数が作成されます。ただし、コンピューターを再起動すると、変数が失われることに注意してください。
[Environment]::SetEnvironmentVariable("TEST", "hello world", "User")
この方法はWindowsフォーラムで広く推奨されていますが、システムの再起動後、変数が持続しないことを人々が認識しているとは思いません。
C)Windows GUIを使用します-これはコマンドほどクールではありませんが、少なくとも機能し、永続化変数を作成します。
Windowsユーザーにとって、このStack Overflowの質問とトップアンサーは、コマンドラインから環境変数を設定する方法について非常に役に立ちます。
これを行うためのNiceツールに出会いました。
環境ファイル(ENV変数エクスポートを含む)を解析してNode.js環境にロードします。つまり、process.env
- このスタイルを使用します。
.env
# some env variables
FOO=foo1
BAR=bar1
BAZ=1
QUX=
# QUUX=
@ctrlplusbの解答として、env-dot-prop
パッケージも見てみることをお勧めします。
process.env
を使用してdot-path
からプロパティを設定/取得することができます。
あなたのprocess.env
が以下を含むと仮定しましょう:
process.env = {
FOO_BAR: 'baz'
'FOO_????': '42'
}
それからあなたはそのような環境変数を操作することができます:
const envDotProp = require('env-dot-prop');
console.log(process.env);
//=> {FOO_BAR: 'baz', 'FOO_????': '42'}
envDotProp.get('foo');
//=> {bar: 'baz', '????': '42'}
envDotProp.get('foo.????');
//=> '42'
envDotProp.get('foo.????', {parse: true});
//=> 42
envDotProp.set('baz.foo', 'bar');
envDotProp.get('', {parse: true});
//=> {foo: {bar: 'baz', '????': 42}, baz: {foo: 'bar'}}
console.log(process.env);
//=> {FOO_BAR: 'baz', 'FOO_????': '42', BAZ_FOO: 'bar'}
envDotProp.delete('foo');
envDotProp.get('');
//=> {baz: {foo: 'bar'}}
console.log(process.env);
//=> {BAZ_FOO: 'bar'}
これにより、環境変数を解析し、それらをアプリケーションの設定オブジェクトとして使用することができます。
また、 12要素構成を実装するのにも役立ちます 。
私がうまく使った環境変数を作るためのとても良い方法は以下の通りです:
A. 異なる設定ファイルがあります :
dev.js //これには開発用のすべての環境変数が含まれています
ファイルに含まれるもの:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some DEV Value1',
someEnvKey2 : 'some DEV Value2'
};
stage.js //これには開発専用のすべての環境変数があります
..
qa.js //これはqaテスト専用の環境変数をすべて持っている
ファイルに含まれるもの:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some QA Value1',
someEnvKey2 : 'some QA Value2'
};
_ note _ :値は環境とともに変化しますが、キーは変わりません。
あなたはもっと持つことができます
z__prod.js //これにはプロダクション/ライブ専用のすべての環境変数があります
注:このファイルはデプロイメント用にバンドルされていません。
これらすべての設定ファイルを/ config /フォルダに置きます。
<projectRoot>/config/dev.js
<projectRoot>/config/qa.js
<projectRoot>/config/z__prod.js
<projectRoot>/setenv.js
<projectRoot>/setenv.bat
<projectRoot>/setenv.sh
_ note _ :prodの名前は他のものとは異なります。すべての人に使われるわけではないからです。
B. 設定ファイルからOS/Lambda/AzureFunction/GoogleCloudFunction環境変数を設定する
理想的には、ファイル内のこれらの構成変数は、OS環境変数(または、LAMBDA関数変数、またはAzure関数変数、Google Cloud Functionsなど)として指定する必要があります。
そのため、Windows OS(またはその他)で自動化を作成します。
' setenv ' batファイルを作成するとします。これは、設定したい環境である1つの引数を取ります。
今 " setenv dev "を実行してください。
a)これは渡された引数変数(今のところ 'dev')から入力を取ります。
b)対応するファイルを読みます( 'config\dev.js')
c)Windows OS(またはその他)の環境変数を設定します
例えば、
Setenv.batの内容は次のとおりです。
node setenv.js
Setenv.jsの内容は次のとおりです。
// import "process.env.ENV".js file (dev.js example)
// loop the imported file contents
// set the environment variables in Windows OS (or, Lambda, etc.)
すべてです 、あなたの環境は使える状態です。
' setenv qa 'を実行すると、すべてのqa環境変数がqa.jsから使用可能になり、同じプログラムで使用可能になります(常にprocess.env.someEnvKey1が要求されますが、取得される値はqa one).
それが役立つことを願っています。
dotenv-webpack で生活を楽にします。 npm install dotenv-webpack --save-dev
をインストールしてから、アプリケーションのルートに.env
ファイルを作成します(.gitignore
の前にgit Push
に追加してください)。このファイルを開き、次のような環境変数を設定します。
ENV_VAR_1=1234
ENV_VAR_2=abcd
ENV_VAR_3=1234abcd
次に、webpack configに以下を追加します。
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');
、plugins: [new Dotenv()]
、およびもちろんmodule.exports = webpackConfig; // Export all custom Webpack configs.
のみが必要です。ただし、シナリオによっては、エラーが発生する場合があります。これらには、特定のエラーを修正する方法を暗示している解決策があります。
これで、アプリケーションでprocess.env.ENV_VAR_1
、process.env.ENV_VAR_2
、process.env.ENV_VAR_3
を簡単に使用できます。
システム環境変数を設定した後、未定義になりました。 APP_VERSIONをUser env varに入れると、process.env.APP_VERSIONを介してノードから値を表示できます。