2015-05-01 17 views
8

Tôi hiện đang trong quá trình tạo ứng dụng nút/ứng dụng nhanh thành triển khai sản xuất, và tôi cần phải chạy nó trong chế độ thân thiện với sản xuất (ví dụ: ít lỗi hơn để stdOut, viết nhật ký cho các địa điểm khác nhau, cho người dùng biết ít hơn khi xảy ra lỗi, v.v.).Cách tốt nhất để đặt ứng dụng Node/Express thành chế độ trực tiếp hoặc chế độ sản xuất

Tôi đang đấu tranh một chút với điều này, vì bất cứ khi nào tôi đặt một biến hầu như bất kỳ loại nào để gọi chế độ 'sản xuất', nó không ảnh hưởng đến chương trình khi chương trình chạy.

Khi đưa ra trong chế độ dev, mã của tôi chạy qua Gulp, và chạy kịch bản này:

#!/usr/bin/env node 
var debug = require('debug')('ascema'); 
var app = require('../app'); 

app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 

nào, như bạn đã biết, chỉ là kịch bản ra mắt được tạo ra từ các máy phát điện nhanh.

Để chạy nó trong chế độ trực tiếp, tôi đã tạo ra một khởi động thay thế cho các máy chủ để sử dụng (Tôi hầu như không thể sử dụng ngụm anyway) và live.js chạy này:

#!/usr/bin/env node 
var app = require('./app.js'); 

app.set('env', 'production'); 

console.log('running on Port 3000'); 

var server = app.listen(3000); 

Nhưng, khi tôi sử dụng app.get('env') ở bất kỳ nơi nào trong ứng dụng (ví dụ: trong app.js hoặc trong các phụ thuộc khác nhau), nó vẫn trả về 'phát triển' và vì vậy không có tác vụ sản xuất nào của tôi xảy ra.

Tôi đang làm gì sai ở đây?

Rất cám ơn.

Trả lời

16

Bạn phải đặt biến số NODE_ENV trên dòng lệnh khi bạn thực thi ứng dụng NodeJS của mình.

Ví dụ:

NODE_ENV=production node app.js 

Ngoài ra, NODE_ENV là một biến môi trường vì vậy nếu đặt nó trong môi trường trên máy chủ của bạn, bạn sẽ không cần phải cung cấp cho nó mỗi khi bạn thực hiện các ứng dụng của bạn để node app.js sẽ làm.

Bạn có thể đặt biến môi trường trong tệp `/ etc/environment '. Dưới đây là thông tin chi tiết về điều đó: https://help.ubuntu.com/community/EnvironmentVariables

+2

Cảm ơn, tôi đã hy vọng rằng sẽ có cách tốt hơn là đặt biến môi trường, nhưng tôi đoán điều này sẽ phải làm. –

Các vấn đề liên quan