2016-08-12 8 views
0

Gulpを使用してビルドプロセス中に環境変数を設定していますが、アプリケーションが起動するとその環境変数は空です。私の環境変数がgulpで設定した後にリセットされるのはなぜですか?

gulpfile.js(ENVを実行した後

gulp.task('build', function() { 
    if (fileExists('.env.json')) { 
    console.log('Setting environment variables'); 
    env({ 
     file: '.env.json', 
     vars: {"DB_NAME": "nbadbtest"} 
    }); 
    console.log("DB_NAME=%s", process.env.DB_NAME); // DB_NAME=TestDB 
    } else { 
    console.log('.env.json file not found. Not setting environment variables.') 
    } 
    var tsProject = ts.createProject(path.resolve('./tsconfig.json')); 
    var tsResult = tsProject.src().pipe(ts(tsProject)); 
    return tsResult.js.pipe(gulp.dest('dist')); 
}) 

を)私のゴクゴクタスクで、私はprocess.env.DB_NAMEが "TestDBと" に設定されていることがわかります。

server.ts

console.log("DB_NAME=%s", process.env.DB_NAME); // DB_NAME=undefined

すぐserver.tsの私輸入した後、私は再びのenv VARを記録したが、今回はそれは未定義です。

[午前22時06分28秒] 'ビルド' ...
環境変数の設定を開始
DB_NAME = nbadbtest
[午後09時06分32秒]終了:ここ

は、端末での出力です3.26秒
後に 'ビルド'>ノードDIST/server.js

DB_NAME =不定

+0

ちなみに、私は、Mac OS XエルキャピタンのV10にVisual Studioのコードで働いています。 11.6 –

答えて

0

これは、環境変数が設定される前に既に開いているノードアプリケーションを起動するターミナルウィンドウが原因であることが判明しています。 npm startを実行すると、gulpで自分のビルドタスクを起動する "prestart" npmスクリプトがあります。このスクリプトは、これらの環境変数を設定します。したがって、gulp buildnode dist/server.jsは同じターミナルウィンドウで実行されます。

gulp buildを実行してから、新しい端末ウィンドウを開くと、node dist/server.jsは、設定された環境変数に新しい端末ウィンドウがアクセスできるため、この問題を修正します。

gulpで自分の環境変数を設定する代わりに、私は現在dotenvを使用しています。私はすべての私の環境変数と.envファイルを作成し、そのように私のserver.jsファイルにdotenv設定:

require('dotenv').config();

関連する問題