Để sử dụng trong môi trường express.js. Bất kỳ đề xuất?
Để sử dụng trong môi trường express.js. Bất kỳ đề xuất?
Câu trả lời:
Trước khi chạy ứng dụng của bạn, bạn có thể làm điều này trong bảng điều khiển,
export NODE_ENV=production
Hoặc nếu bạn đang ở trong windows, bạn có thể thử điều này:
SET NODE_ENV=production
hoặc bạn có thể chạy ứng dụng của mình như thế này:
NODE_ENV=production node app.js
Bạn cũng có thể đặt nó trong tệp js của mình:
process.env.NODE_ENV = 'production';
Nhưng tôi không khuyên bạn nên làm điều đó trong tệp thời gian chạy của bạn, vì không dễ để mở VIM trong máy chủ của bạn và thay đổi nó thành sản xuất. Bạn có thể tạo một tệp config.json trong thư mục của mình và mỗi khi ứng dụng của bạn chạy, nó sẽ đọc từ đó và đặt cấu hình.
process.env.NODE_ENV
đáng tin cậy từ chính ứng dụng. Tốt nhất đặt biến môi trường của bạn đúng như Daniel liên kết dưới đây.
NODE_ENV
rõ ràng mỗi khi bạn chạy ứng dụng, như trong ví dụ thứ hai ( NODE_ENV=production node app.js
). Bằng cách đó bạn có khả năng tiết kiệm cho mình từ một số tương lai tóc kéo trong trường hợp bạn quên đặt địa phương của bạn NODE_ENV
trở lại development
.
cross-env NODE_ENV=production
hoạt động trên windows và linux / mac.
NODE_ENV=production forever app.js
nên làm việc.
trong gói.json:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
sau đó chạy trong terminal:
npm start
NODE_ENV=production
vào gói.json không có ý nghĩa nhiều. Chạy npm start
trong phát triển sẽ chạy nó trong sản xuất. Bạn có thể viết mã của mình như thể nó luôn luôn sản xuất, vì bạn luôn chạy nó theo cách đó. Một lý do tôi thấy để làm điều này là buộc các mô-đun khác (ví dụ Express) chạy trong chế độ sản xuất. Tại sao lại sử dụng biến môi trường nếu chúng không bao giờ thay đổi?
Không ai đề cập .env
ở đây chưa? Tạo một .env
tệp trong ứng dụng gốc của bạn, sau đó require('dotenv').config()
và đọc các giá trị. Dễ dàng thay đổi, dễ đọc, đa nền tảng.
"mode": "production"
trong các .env
tập tin làm việc.
export NODE_ENV=production
là giải pháp xấu, nó biến mất sau khi khởi động lại.
nếu bạn không muốn lo lắng về biến đó nữa - hãy thêm nó vào tệp này:
/etc/environment
không sử dụng cú pháp xuất, chỉ viết (trong dòng mới nếu đã có sẵn một số nội dung):
NODE_ENV=production
nó hoạt động sau khi khởi động lại. Bạn sẽ không phải nhập lại xuất NODE_ENV = sản xuất lệnh nữa ở bất cứ đâu và chỉ cần sử dụng nút với bất cứ thứ gì bạn thích - mãi mãi, pm2 ...
Đối với heroku:
heroku config:set NODE_ENV="production"
mà thực sự là mặc định.
NODE_ENV=production gulp bundle-production-app
để đóng gói kịch bản sẵn sàng sản xuất, trong máy chủ NODE_ENV nằm trong môi trường của máy chủ và trong máy dev thì không có ở đó. Trong một số máy, đó là cơn ác mộng nếu nó không được đặt và bạn mong muốn nó luôn được đặt . Trong một số, bạn hy vọng không có nó, vì vậy bạn không thêm. Dù sao, trong khi thực hiện UI tôi làm rõ nếu nó ở chế độ phát triển để bạn không bao giờ có câu hỏi nếu nó bật hay tắt. Nếu NODE_ENV là! == sản xuất thì bạn phải ở chế độ khác, vì vậy không có cơn ác mộng nào cả. Tất cả rõ ràng, tất cả đều tốt.
/etc/environment
và chạy export NODE_ENV=production
không?
Để không phải lo lắng liệu bạn đang chạy tập lệnh của mình trên Windows, Mac hay Linux, hãy cài đặt gói cross-env . Sau đó, bạn có thể sử dụng tập lệnh của mình một cách dễ dàng, như vậy:
"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"
}
Đạo cụ khổng lồ cho các nhà phát triển của gói này.
npm install --save-dev cross-env
heroku config:set NODE_ENV="production"
NODE_ENV=production
hiện là mặc định trong Heroku node.js triển khai.
Đối với Windows Powershell, hãy sử dụng lệnh này
$env:NODE_ENV="production" ; node app.js
Trên OSX, tôi khuyên bạn nên thêm export NODE_ENV=development
vào ~/.bash_profile
và / hoặc ~/.bashrc
/ hoặc ~/.profile
.
Cá nhân tôi thêm mục đó vào của tôi ~/.bashrc
và sau đó có~/.bash_profile
~/.profile
nhập nội dung của tệp đó, vì vậy nó phù hợp giữa các môi trường.
Sau khi thực hiện các bổ sung này, hãy chắc chắn khởi động lại thiết bị đầu cuối của bạn để nhận cài đặt.
Nếu bạn đang ở trên cửa sổ. Mở cmd của bạn ở thư mục bên phải, trước tiên
set node_env={your env name here}
nhấn enter sau đó bạn có thể bắt đầu nút của mình với
node app.js
nó sẽ bắt đầu với cài đặt env của bạn
Để có nhiều môi trường, bạn cần tất cả các câu trả lời trước đó (tham số NODE_ENV và xuất nó), nhưng tôi sử dụng một cách tiếp cận rất đơn giản mà không cần cài đặt bất cứ điều gì. Trong gói.json của bạn, chỉ cần đặt một tập lệnh cho mỗi env bạn cần, như thế này:
...
"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"
}
...
Sau đó, để khởi động ứng dụng thay vì sử npm start
dụng npm run script-prod
.
Trong mã bạn có thể truy cập vào môi trường hiện tại với process.env.NODE_ENV
.
Voila.
Windows CMD -> set NODE_ENV=production
Quyền hạn Windows -> $env:NODE_ENV="production"
MAC -> export NODE_ENV=production
Daniel có một câu trả lời tuyệt vời đó là cách tiếp cận tốt hơn cho quy trình triển khai (đặt và quên) chính xác.
Đối với những người sử dụng express. Bạn có thể sử dụng grunt-express-server cũng rất tuyệt vời. https://www.npmjs.org/package/grunt-express-server
Nó có thể là một cơ hội mà bạn đã thực hiện hai trường hợp của đối tượng sắp xếp lại
ví dụ: var con1 = new Sequelize (); var con2 = new Sequelize ();
cũng xảy ra lỗi tương tự