NodeJSのチュートリアルに従おうとしています。私は何も見逃したとは思いませんが、私が呼び出すときはいつでも私process.env.NODE_ENV
が返す唯一の値はですundefined
。私の調査によると、デフォルト値はですdevelopment
。この値はどのように動的に設定され、最初はどこに設定されますか?
19 に答える
process.env
は環境への参照であるため、そこで変数を設定する必要があります。
Windowsで環境変数を設定するには:
SET NODE_ENV=development
macOS / OS XまたはLinuxの場合:
export NODE_ENV=development
*nix (Linux、OS X など) を使用している場合は、2 番目のエクスポート コマンドを使用して実行する必要はありません。呼び出しコマンドの一部として連鎖させることができます。
NODE_ENV=development node server.js
簡単ですよね?:)
Windows でノードを操作しているときに、この問題に遭遇しました。
アプリを実行しようとする人にこれらの変数を設定するよう要求するのではなく、アプリ内でフォールバックを提供しました。
var environment = process.env.NODE_ENV || 'development';
本番環境では、通常の方法 (SET/エクスポート) に従って定義します。
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」コマンドを押す必要があります
アプリケーションのできるだけ早い段階で、dotenv を要求して構成します。
require('dotenv').config()
UBUNTU では次のように使用します。
$ export NODE_ENV=テスト
dotenv
npm からパッケージを使用できます。リンクは次のとおりです: https://www.npmjs.com/package/dotenv
これにより、すべての構成を.env
ファイルに配置できます
Electron Jsでは
"scripts": {
"start": "NODE_ENV=development electron index.js",
},
React でこの問題に直面した場合は、react-scripts@0.2.3 以降が必要です。また、React で動作する以外の環境変数についてはNODE_ENV
、接頭辞を付ける必要がありますREACT_APP_
。
processという名前の関数を定義すると、この問題が発生する可能性があります。
Windows/Mac/Linux の package.json で process.env.NODE_ENV を定義する:
私の Mac (MacBook Pro 2019、16 インチ、Big Sur) でうまくいったのは次のとおりです。
"scripts": {
"build": "export NODE_ENV=prod || set NODE_ENV=prod&& npx eslint . && node --experimental-json-modules ./backend/app.js && gulp",
},
文字列を使用するexport NODE_ENV=prod || set NODE_ENV=prod&&
と、Windows と Linux で動作する可能性がありますが、テストしていません。
誰かがそれを確認できれば、それは素晴らしいことです。
残念ながら、私のpackage.jsonファイルではcross-env npm パッケージを使用してもまったく機能しませんでした。これを機能させるために Mac で長い時間を費やしています。
次のように、コードで設定することもできます。
process.env.NODE_ENV = 'test';