15

Tôi đang sử dụng tệp .env để giữ các biến môi trường cho máy chủ. Điều này làm việc nếu tôi chạy máy chủ với bắt đầu quản đốc. Nhưng nó không hoạt động với nodemon.Làm thế nào để sử dụng nodemon với các tập tin .env?

Tôi muốn sử dụng nút thay vì nó tự động khởi động lại khi bạn sửa đổi máy chủ. Làm thế nào tôi có thể nhận được nodemon để làm việc với các tập tin .env?

+0

Tôi đã sử dụng các tệp .env với gói [dotenv] (https://www.npmjs.com/package/dotenv) và thực sự hữu ích nhưng tôi gặp sự cố nếu tôi thay đổi một số biến trên tệp .env và khởi động lại quá trình (ví dụ: sử dụng lệnh rs trên bàn điều khiển) bất kỳ thay đổi mới nào trên tệp .env không được thực hiện trong tài khoản – rkmax

Trả lời

32

Tôi có một sản xuất Procfile với:

web: node web.js 

Vì vậy, tôi đã tạo ra một tập tin Procfile_dev với:

web: nodemon web.js 

Và khi tôi đang ở môi trường phát triển tôi chạy:

$ foreman start -f Procfile_dev 

Nó hoạt động như một sự quyến rũ và không ảnh hưởng đến sản xuất.

+0

Với Express Procfile_dev sẽ là: 'web: nodemon./bin/www' – Ludder

12

Bạn có thể nhận nodemon trực tiếp sử dụng .env với lệnh sau đây

$: env $(cat .env) nodemon app.js 

Hãy nhận biết rằng bạn sẽ phải khởi động lại nó nếu bạn thay đổi .env và nó sẽ không thích nó nếu có bất kỳ khoảng trống nào trong tệp .env của bạn.

7

Nơi biến cấu hình địa phương của bạn trong file .env và chạy quản đốc cùng với nodemon bằng cách sử dụng lệnh sau

$ foreman run nodemon web.js 
+0

Đây là một giải pháp tuyệt vời vì nó cũng không buộc bạn phải có một 'Procfile' nếu bạn không muốn. Cách khác là sử dụng phần 'start' [script] (https://www.npmjs.org/doc/misc/npm-scripts.html) trong tệp' package.json' của bạn, được sử dụng bởi 'npm start 'và' nodemon'. Và nếu bạn sử dụng [Heroku] (http://heroku.com) để sản xuất, nó bây giờ tạo ra một 'Procfile' khi triển khai sử dụng' npm start'. – twistedstream

0

Heroku Procfile

Thay đổi: web: nút app.js tới web: ứng dụng nodemon .js

2

Necromancy chủ đề!

Sử dụng grunt-env để tải biến môi trường từ cấu hình heroku của bạn.

+0

Điều này đã giúp tôi sử dụng tệp .env của tôi trong Gruntfile.js của tôi. Chính xác những gì tôi đang tìm kiếm. –

5

Với các phiên bản gần đây của Node (kể từ io.js 1.6), bạn có thể vượt qua cờ -r để yêu cầu mô-đun khi bắt đầu. Điều này cho phép bạn tải trực tiếp các .env bằng cách sử dụng nodemon của --exec:

nodemon --exec 'node -r dotenv/config' 

này đòi hỏi sự NPM gói dotenv được cài đặt.

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