2017-11-28 34 views
0

私はtypescriptを使い慣れています。私のtypescriptページのprocess.env変数にアクセスできないようです。それは範囲の問題だと思われますが、それは理にかなっていません。typescriptでノードのenv変数を取得する

yamlファイルから自分の環境変数を取得し、実行中のプロセスにそれらを添付します。

module.exports = function() { 
    const YAML = require('yamljs'); 
    const envVars = YAML.load('env.yml')[process.env.NODE_ENV]; 
    Object.keys(envVars).forEach(v => { 
     console.log('vars', v); 
     process.env[v] = envVars[v]; 
    }); 
}; 

私はその後、私はloadYmlEnvに各VARのためのコンソールを見ることができます

cross-env NODE_ENV=test node -e \"require('./setup-env')()\" && jasmine-ts **/*.spec.ts 

とNPMで私のtypescriptですを実行するが、私は私のtypescriptですファイルからVARSをログコンソールしようとすると、それらはすべてです未定義。私はprocess.env全体を吐き出すことができ、私が必要とするenv varsはそこにありません....奇妙な

+0

あなたのタイスクリプトファイルは別のプロセスで実行しますか? https://nodejs.org/api/process.html#process_process_envこのオブジェクトを変更することは可能ですが、そのような変更はNode.jsプロセスの外部には反映されません。 – HMR

+0

ええ、私はあなたが正しいと思います。私は彼らが1本の糸で走っていると思ったが、明らかにそうではなかった。私はテストの一部としてセットアップを含めましたが、それは理想的ではありません。 – pedalpete

答えて

1

クロスenv NODE_ENV =テストノード-e \ "require( './ setup-env')() & &ジャスミン-TS **/*。spec.ts

これはNODE_ENVでプロセスを作成し、テスト

に設定すると、あなたは「セットアップ-ENV」を必要とし、そのプロセスは

を出て別のプロセスを作成します

次に、NODE_ENV = testが設定されているjasmine-tsを実行します

関連する問題