NodeJのチュートリアルを実行しようとしています。私は何かを逃したとは思わないが、process.env.NODE_ENV私が返す唯一の値を呼び出すときはいつでも未定義である。私の研究によると、デフォルト値は「開発」でなければなりません。この値はどのように動的に設定され、どこで最初に設定されますか?
NodeJのチュートリアルを実行しようとしています。私は何かを逃したとは思わないが、process.env.NODE_ENV私が返す唯一の値を呼び出すときはいつでも未定義である。私の研究によると、デフォルト値は「開発」でなければなりません。この値はどのように動的に設定され、どこで最初に設定されますか?
回答:
process.envは環境への参照であるため、そこで変数を設定する必要があります。
Windowsで環境変数を設定するには:
SET NODE_ENV=development
OS XまたはLinuxの場合:
export NODE_ENV=development
export NODE_ENV=developmentする前に、Macターミナルで実行しましたreact-native run-ios。デバッグ時の値process.env.NODE_ENVは未定義です。
チップ
でpackage.json:
"scripts": {
"start": "set NODE_ENV=dev && node app.js"
}
でapp.js:
console.log(process.env.NODE_ENV) // dev
console.log(process.env.NODE_ENV === 'dev') // false
console.log(process.env.NODE_ENV.length) // 4 (including a space at the end)
だから、これは良いかもしれません:
"start": "set NODE_ENV=dev&& node app.js"
または
console.log(process.env.NODE_ENV.trim() === 'dev') // true
"start": "set NODE_ENV=dev&& node app.js"
console.log(process.env.NODE_ENV.length) // 4(最後のスペースを含む)
console.log(('' + process.env.NODE_ENV).trim() === 'dev') // true、process.env.NODE_ENVが定義されていなくてもエラーをスローしないため、より安全です。
* nix(Linux、OS Xなど)を使用している場合は、2番目のエクスポートコマンドを使用する必要はありません。呼び出しコマンドの一部としてチェーンできます。
NODE_ENV=development node server.js
簡単ですか?:)
cross-env npmパッケージを使用できます。環境変数のトリミングを処理し、異なるプラットフォーム間で動作することも確認します。
プロジェクトのルートで、次を実行します。
npm install cross-env
次に、package.jsonのスクリプトの下に、以下を追加します。
"start": "cross-env NODE_ENV=dev node your-app-name.js"
次に、ターミナルのプロジェクトルートで、次のコマンドを実行してアプリを起動します。
npm start
その後、環境変数はとしてアプリで使用できるようprocess.env.NODE_ENVになるため、次のようなことができます。
if (process.env.NODE_ENV === 'dev') {
// Your dev-only logic goes here
}
package.jsonで、以下のように構成する必要があります(LinuxおよびMac OSで動作)
重要なことは、以下のビルドコマンドが例である後の「export NODE_ENV = production」です。
"scripts": {
"start": "export NODE_ENV=production && npm run build && npm run start-server",
"dev": "export NODE_ENV=dev && npm run build && npm run start-server",
}
開発環境では、「npm run dev」コマンドを実行する必要があります
本番環境では、「npm run start」コマンドを実行する必要があります
UBUNTUで使用:
$ export NODE_ENV = test
OSによる
package.jsonに、必ずスクリプトがあることを確認してください(app.jsは実行するメインのjsファイルであり、NODE_ENVは.envファイルで宣言されています)。例:
"scripts": {
"start": "node app.js",
"dev": "nodemon server.js",
"prod": "NODE_ENV=production & nodemon app.js"
}
窓用
また、NODE_ENV = developmentを持つ.envファイル変数を設定します
.envファイルがeg.configフォルダーのフォルダーにある場合は、必ずapp.js(メインのjsファイル)で指定してください
const dotenv = require( 'dotenv'); dotenv.config({パス: './config/config.env'});
アプリケーションのできるだけ早い段階で、dotenvを要求して構成します。
require('dotenv').config()
たとえば、コードで設定することもできます。
process.env.NODE_ENV = 'test';
heroku config:set NODE_ENV="production"