2016-05-21 4 views
1

ノードの起動後にNODE_PATH環境変数を設定する方法はありますか?ノード実行ファイルの実行後にNODE_PATHをエクスポートする

私はこれを行う場合:

async.series([ 
     function export_NODE_PATH(cb){ 
      cp.exec('export NODE_PATH=$(npm root -g):$NODE_PATH',cb); 
     },... 

が、それは動作しませんが、私はノードを開始する前にNODE_PATHを設定した場合、それは

export NODE_PATH=$(npm root -g):$NODE_PATH && node index --transpile test 

期待どおりに動作しますを設定する方法があります実行する前にコマンドラインで設定する必要はありません。実行時にprocess.env.NODE_PATHを設定するのと同じくらい簡単ですか?

例えば、これは動作しているようです:

cp.exec('echo $(npm root -g)', function (err, stdout, stderr) { 
    if (err || String(stdout).match(/error/i) || String(stderr).match(/error/i)) { 
     cb(err || stdout || stderr); // my funky way of handling this 
    } 
    else { 
     process.env.NODE_PATH += stdout; 
     cb(null); 
    } 
    }); 

が、私はそれがどのようにユダヤのかわからない、それは実際にはさらにテスト後に、動作するようには思えません。

答えて

1

これを実現する1つの方法は、.envファイルを作成し、dotenvというnpmライブラリを使用して.envファイル変数をprocess.envに自動的に読み込むことです。

手順1:手順は次のとおり は、プロジェクトディレクトリに.envファイルを作成します$ touch .env

ステップ2:場所(引用符なし) "NODE_ENV=yourvaluehere" あなた.envファイルに次のテキスト

ステップ3: $ npm install dotenv --save

ステップ3 dotenvインストールします、JSで は、サーバーを起動する実行ファイルをrequire('dotenv').config();

次を追加0

Violaでは、envファイルを介してノードプロセスに環境変数を設定しています。 process.envには、.envファイルに保存されているすべてのキー値ペアが含まれます。

1

設定process.env.NODE_PATH(または他のenv var)は完全に "合法"です - 実際にはdotenvyenvなどのライブラリはどのように魔法を執行しますか?

+1

実行時にprocess.env.NODE_PATHを再割り当てしただけで何らかのテストが行​​われているようですが、動作していないようですが、あなたが知っている限り、どのように実行したかを把握するために挙げたライブラリのソースコードを見ています。あなたの答えを増やしてください! –

+1

それが使用される前にそれを割り当てていることを確認してください - NODE_PATHは特別ですが – Jeff

関連する問題