express.js環境で使用します。助言がありますか?
express.js環境で使用します。助言がありますか?
回答:
アプリを実行する前に、コンソールでこれを実行できます。
export NODE_ENV=production
または、Windowsを使用している場合は、これを試すことができます。
SET NODE_ENV=production
または、次のようにアプリを実行できます。
NODE_ENV=production node app.js
jsファイルで設定することもできます:
process.env.NODE_ENV = 'production';
ただし、サーバーでVIMを開いて本番環境に変更するのは簡単ではないため、ランタイムファイルで行うことはお勧めしません。ディレクトリにconfig.jsonファイルを作成すると、アプリが実行されるたびに、そのファイルが読み取られ、構成が設定されます。
process.env.NODE_ENV
アプリ自体から確実に設定するのは難しいでしょう。Danielが以下にリンクするように、環境変数を適切に設定することをお勧めします。
NODE_ENV
2番目の例(NODE_ENV=production node app.js
)のように、アプリを実行するたびに明示的に設定するのが好きです。そうすれば、ローカルをにNODE_ENV
戻すのを忘れた場合に、将来の髪の引っ張りから自分を救う可能性がありますdevelopment
。
cross-env NODE_ENV=production
WindowsおよびLinux / Macで動作します。
NODE_ENV=production forever app.js
は動作するはずです。
package.json:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
次にターミナルで実行します:
npm start
NODE_ENV=production
package.jsonを入れても意味がありません。実行npm start
開発では、生産にそれを実行します。常にそのように実行するため、コードは常に本番環境であるかのように書くことができます。私がこれを実行する理由の1つは、他のモジュール(例:Express)を強制的にプロダクションモードで実行するためです。環境変数が変更されないのに、なぜ環境変数を使用するのですか?
.env
ここでまだ誰も言及していませんか?確認し.env
た後、アプリのルートにファイルをrequire('dotenv').config()
して値を読み取ります。簡単に変更でき、読みやすく、クロスプラットフォーム。
"mode": "production"
、.env
ファイルの設定はうまくいきました。
export NODE_ENV=production
悪い解決策です、再起動後に消えます。
その変数についてもう心配しない場合は、このファイルに追加します。
/etc/environment
エクスポート構文を使用せず、次のように記述します(すでにコンテンツがそこにある場合は新しい行に):
NODE_ENV=production
再起動後に機能します。export NODE_ENV = productionコマンドを再入力する必要がなくなり、ノードを好きなもので使用するだけです-永久に、pm2 ...
herokuの場合:
heroku config:set NODE_ENV="production"
これは実際にはデフォルトです。
NODE_ENV=production gulp bundle-production-app
本番環境対応のスクリプトをバンドルするために使用しています。サーバーのNODE_ENVはサーバーの環境にあり、開発マシンにはありません。一部のマシンでは、設定されておらず、常に設定されていることを期待していると悪夢になります。いくつかは、それを持たないことを期待しているので、追加しません。とにかく、UIを実行しているときに、開発モードかどうかを明確にします。そのため、オンかオフかについて質問されることはありません。NODE_ENVが!==プロダクションの場合、他のモードにいるのはあなたの目の前なので、悪夢はまったくありません。すべてクリア、すべて良い。
/etc/environment
ありますexport NODE_ENV=production
か?
スクリプトをWindows、Mac、またはLinuxのどちらで実行するかを心配する必要がないようにするには、cross-envパッケージをインストールします。その後、次のようにスクリプトを簡単に使用できます。
"scripts": {
"start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
"start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}
このパッケージの開発者への大規模な小道具。
npm install --save-dev cross-env
heroku config:set NODE_ENV="production"
NODE_ENV=production
Herokuのデフォルトのnode.jsがデプロイされます。
OSXではexport NODE_ENV=development
、~/.bash_profile
andおよび/または~/.bashrc
and / orに追加することをお勧めします~/.profile
。
個人的に私は私にそのエントリを追加~/.bashrc
して、持っている~/.bash_profile
~/.profile
、それが環境全体で一貫ですので、インポートにそのファイルの内容を。
これらの追加を行った後、必ずターミナルを再起動して設定を取得してください。
Windowsを使用している場合。正しいフォルダでcmdを開いてから、最初に
set node_env={your env name here}
Enterキーを押すと、ノードを開始できます
node app.js
それはあなたの環境設定で始まります
複数の環境を用意するには、以前にすべての答えが必要です(NODE_ENVパラメーターとエクスポート)。しかし、私は何もインストールする必要がない非常に単純なアプローチを使用しています。package.jsonに、次のように、必要な環境ごとにスクリプトを追加するだけです。
...
"scripts": {
"start-dev": "export NODE_ENV=dev && ts-node-dev --respawn --transpileOnly ./src/app.ts",
"start-prod": "export NODE_ENV=prod && ts-node-dev --respawn --transpileOnly ./src/app.ts"
}
...
次に、npm start
use を使用する代わりにアプリを起動しますnpm run script-prod
。
コードでは、を使用して現在の環境にアクセスできますprocess.env.NODE_ENV
。
出来上がり。
ダニエルは、正しい展開(設定して忘れる)プロセスに対するより良いアプローチである素晴らしい答えを持っています。
エクスプレスをご利用の方へ。素晴らしいgrunt-express-serverも使用できます。 https://www.npmjs.org/package/grunt-express-server
sequelizeオブジェクトの2つのインスタンスを作成した可能性があります
例:var con1 = new Sequelize(); var con2 = new Sequelize();
同じエラーが発生するよりも