2017-12-03 9 views
0

NODE_ENV変数の生産を割り当てることができないネイティブ反応し、パラメータの割り当てここ私は、ネイティブアプリを反応させ、私のための環境を切り替えることprocess.env.NODE_ENVを利用しようとしています

1. 2つの問題に直面していますNODE_ENVにまっすぐ進むのenv値を変更していないよう、以下のコマンドを実行し

は、それがprocess.env.NODE_ENV値を変更したがglobal.process.env.NODE_ENV

を変更しているように見えるdoesntのことを示してい

実行コマンド:

NODE_ENV=development npm start -- --reset-cache 

出力:注意してください、2番目のログ文はまだ開発を出力します。私が試した

console.log("printing the changed value - ", process.env.NODE_ENV); // --> printing the changed value - production 

console.log("checking the env content - ", process.env); // ---> checking the env content - { NODE_ENV: 'development' } 

回避策は、グローバルインスタンスにprocess.env.NODE_ENVを割り当てることです、これはを続行するには良い方法である場合

global.process.env.NODE_ENV = process.env.NODE_ENV 

は助言ください。 NODE_ENVに値として "生産" を割り当て

2、唯一のプロパティのエラーを読み取るために割り当てようとしましたスロー

実行コマンド:

NODE_ENV=production npm start -- --reset-cache 

画像が添付見つけてください - AssignToReadOnlyPropertyIssue

答えて

0

ここであなたが直面している問題は、間違った仮定から来ています。

react-nativeノードと同じ方法でjavascriptを実行しません。

はのは、次のNPMのスクリプトを考えてみましょう:

"scripts": { 
    "start": "node index.js" 
} 

SOME_VAR="some value" npm startを実行している場合、それはSOME_VARが定義されたプロセスから実行されているので、process.envは、その環境変数のエントリが含まれています。異なるreact-native何かで

が起こる: は、あなたのjavascriptのコードをバンドルして、バンドルがその順番で実行されるエミュレータやデバイスの設置にそのjavascriptのバンドルを送信反応し、ネイティブパッケージャを開始npm startを呼び出します。 react-nativeのパッケージャは、javascriptがバンドルされている環境変数を "転送"しません。


がうまくいけば、我々はノードのアプリを開発する際に使用するために使用している同じパターンを使用し続けることができるように私たちを助けるためのパッケージがあります。

私が本当に参考にしたものはbabel-plugin-transform-inline-environment-variablesでした。これは、process.env.SOME_VARタイプの呼び出しをバンドル時にSOME_VARの値に変換するバベルプラグインです。

それは私が最初にそれは私が環境変数を変更して働いていたかを確認しようとしていたが、唯一の「ランダム」動作するように見えたときにということだったと私が持っていた唯一の頭痛。私はwebpackのキャッシュの犠牲者だった。コードに変更がなければ、それはバンドルを更新しません。私はそれを知っていなければならないことを学んだ

関連する問題