2016-02-12 17 views
17

Node.jsアプリケーションで使用しているAPIキーがあります。現在、私はそれをテキストファイルに保存し、アプリケーションが起動するときにグローバル変数に入れます。Node.jsでAPIキーを使用する場合のベストプラクティス

すっごくは、基本的にはそれだけだ。

var key = getKey(); 
useKeyGetData(key); 

私は、このグローバル変数を持っ好きではない、それはファイルの間を通過する痛みです。私の鍵をどこで入手するのが良い方法はありますか?そうするための標準がありますか?

+0

.jsファイルに保存して値をエクスポートすると何が問題になりますか?それから、必要な場所でそれらを要求するだけです。明らかに、私はあなたの質問を理解していません。 –

+0

あなたがグローバルにそれをローカルに必要としたくないならば。 – Kuf

答えて

27

APIキーに関連する従来の代替方法は、environment variablesを使用することです。これは、オペレーティングシステムレベルの構成機能です。各プロセスには独自の環境変数があり、通常は親プロセスから継承されます。慣例により、環境変数には大文字の名前が付けられます。

node.jsでは、process.envから環境変数にアクセスできます。あなたはこのようなアプリケーション実行している場合たとえば、:それは渡す保つために持っている、しかし、退屈することができ

process.env.MY_VARIABLE 

$ MY_VARIABLE=test node app.js 

をあなたは経由MY_VARIABLE環境変数の値にアクセスすることができますプログラムの呼び出しごとに環境変数を設定します。だから、dotenvのようなパッケージがあり、あなたの環境変数をテキストファイルに保存することができます。

具体的には、あなたがファイルを持っていますが.envと呼ばれ、その中にあなたが持っているかもしれません:

MY_VARIABLE=test 
OTHER_VARIABLE=foo 

をごapp.jsの開始時に、あなたがして行います。

require('dotenv').config(); 

これは、環境を読み込みます.envファイルの可変値。あなたが他の環境変数にアクセスするとあなたは、それらにアクセスすることができます。

console.log("MY_VARIABLE: " + process.env.MY_VARIABLE); 
console.log("OTHER_VARIABLE: " + process.env.OTHER_VARIABLE); 

今、あなたは明示的に呼び出し時にアプリケーションに環境変数を渡す必要はありません、あなたはいつものようにそれを実行することができます例:

$ node app.js 

あなたはパス1明示的に行う場合、それはあなたがあなたの.envファイルに与えたものは何でも値より優先されます:

$ MY_VARIABLE=bar node app.js 

MY_VARIABLEの環境変数の値は、"testing"の代わりに"bar"になりました。 OTHER_VARIABLEは明示的に渡されないため、ファイルに指定されている値は"foo"のままです。

+1

ああ、ありがとう。正確に私が探していたもの:私の鍵を扱うための標準的な規則。 –

+0

私はこれが良い意味である理由を理解しようとしています。私は、プロダクションnodejsサーバのためにdotenvを使うつもりですが、 '' 'contants.json'''ファイルやnpm configモジュールを言うよりも、このファイルがどうやって優れているのか理解したいですか?環境変数を介して資格証明を渡すことのセキュリティ/メリットについて教えてください。 – codneto

+0

同じページにいることを確認するには、dotenvと環境変数自体を混同しないでください。 dotenvは単にnpmパッケージであり、env varsを指定できるファイルの使用をサポートすることで、より簡単に作業することができます。ファイルは便利です。それは環境変数そのものではありません。任意のconstants.jsonファイルと比較した場合の利点は、それがプロセスを構成する標準的な方法だということです。 Docker、systemd、upstartなどはすべて、プロセスの複数の独立したインスタンスを構成するこの方法を理解しています。 –

関連する問題