2017-01-06 28 views
2

私たちは私たちのプロジェクトの一つでキーストンフレームワークを使用しています。私は.jsファイルの一つに.envファイル変数を使ってhttpサイトに接続しようとしています。私はdotenvを使い、xxyzはどこですか.envファイルから変数を呼び出す方法が他にある場合は、私に知らせてください。Keystone.js以外の.jsファイルで.envファイル変数を使用するにはどうすればよいですか?

答えて

2

読むことprocess.envは、環境変数を取得するための標準的な方法です。 the docsを参照してください。

上記のdotenvパッケージは、.envファイルに記載されているものをとり、process.envに記載しています。しかし、検証は行われないので、間違いを起こしやすい。

私のenvyモジュールを試してみてください。よくある間違いをすべて防ぎます。これは、とりわけ欠けている変数をチェックします。

.envファイルはまだあなたのトラブル与えている場合:

  • は、あなたが正しい変数名を使用していることを確認してください。
  • タイプミスがないことを確認してください。
  • 正しい構文を使用していることを確認してください。
  • 代わりにcommand line argumentsを使用することを検討してください。私はこのためにmeowをお勧めします。 envy and meow togetherの使用例も参照してください。構文について

:によっては、使用しているローダーに(envy対例えばdotenv)、.envファイル内の構文は、それが解析される方法に大きな影響を与える可能性があります。例えば、Bashと(ファイルが基づいている)他のシェルでは、以下の例の一つ一つは

MY_VAR=foo $BAR 
MY_VAR='foo $BAR' 
MY_VAR="foo $BAR" 

はまた、環境変数名は大文字と小文字が区別され、慣例である...完全に異なる動作をしますすべて大文字です。これは、それが珍しい言語の間違いにつながる可能性があります。 Node.jsプログラムの process.envでは、環境変数の命名規則がプログラムの他の部分と異なることを忘れることがあります。あなたが envyを使用している場合、それはそれらを返す前にキャメルケースにする変数名を正規化することによって、これを修正するよう

const myVar = process.env.myVar; // wrong 
const myVar = process.env.MY_VAR; // correct 

ケーシングは、問題ではありません。

const { myVar } = envy(); // correct, no matter how it is in `.env` 

にかかわらず、使用され、ローダの、あなたはもちろん.envファイルが読み込まれます前に、その負荷関数を呼び出す必要があります。 のみを使用しているので、これを忘れることはほとんどありません。envy()しかし、dotenvを使用している場合は、dotenv.config()を呼び出す前に、既に利用可能であり、入力されているため、間違った時刻にprocess.envに簡単にアクセスできます。

デバッグや時間と労力の節約に役立つ別のトリックは、設定用の専用モジュールを作成することです。 require cacheのおかげで、私たちは作業を何度もやることを避け、ローダーがidempotentであることを避けます。

env.jsというファイルに入れてください。

const envy = require('envy'); 
module.exports = envy(); 

次に、別の場所にインポートします。

const env = require('./env'); 

ここでは、デバッグするのが非常に簡単で、どこにインポートしても同じように動作するはずです。

1

xxyz = HTTPSiteAddressを.envファイルに追加するだけです。そして、process.env.xxyzを使ってどこでも変数を呼び出すことができます。例えば

var request = require("request"); 

request(process.env.xxyz, function(error, response, body) { 
    console.log(body); 
}); 

これは、限り、あなたのkeystone.jsファイルが先頭に含まれているように動作します:

require('dotenv').config(); 
関連する問題