Làm cách nào để thay đổi giá trị của process.env.PORT trong node.js?


141

Tôi muốn thay đổi giá trị của process.env.PORT, làm thế nào tôi có thể làm điều này?

Tôi đang chạy Ubuntu 12.04.

Câu trả lời:


281

Đối với chỉ một lần chạy (từ dấu nhắc shell unix):

$ PORT=1234 node app.js

Vĩnh viễn hơn:

$ export PORT=1234
$ node app.js

Trong Windows :

set PORT=1234

Trong Windows PowerShell :

$env:PORT = 1234

4
Đối với tài liệu vì lợi ích, msdn.microsoft.com/en-us/l
Library / windows / desktop / Khăn

3
Ngoài ra, đối với Powershell, đó là $env:PORT = 80 technet.microsoft.com/en-us/l
Library / ff730964.aspx

VAR_1=value VAR_2=11827 node-> chỉ cần sử dụng một khoảng
trắng

14

Bạn có thể sử dụng giải pháp đa nền tảng https://www.npmjs.com/package/cross-env

$ cross-env PORT=1234

Đây có lẽ là giải pháp tốt nhất. Có quá nhiều lề cho lỗi với các thiết bị đầu cuối khác nhau. Tôi đã dành 40 phút cho đến khi tôi thấy cross-envtóm tắt vấn đề này và chỉ hoạt động.
adi518

8

sử dụng lệnh dưới đây để đặt số cổng trong quá trình nút trong khi chạy chương trình JS của nút:

set PORT =3000 && node file_name.js

Cổng đặt có thể được truy cập trong mã như

process.env.PORT 

2

EDIT: Nhận xét của Per @ sshow, nếu bạn đang cố chạy ứng dụng nút của mình trên cổng 80, dưới đây không phải là cách tốt nhất để làm điều đó. Đây là một câu trả lời tốt hơn: Làm cách nào để tôi chạy Node.js trên cổng 80?

Câu trả lời gốc:

Nếu bạn muốn làm điều này để chạy trên cổng 80 (hoặc muốn đặt biến env vĩnh viễn hơn ),

  1. Mở hồ sơ bash của bạn vim ~/.bash_profile
  2. Thêm biến môi trường vào tệp export PORT=80
  3. Mở tập tin cấu hình sudoers sudo visudo
  4. Thêm dòng sau vào tệp chính xác như vậy Defaults env_keep +="PORT"

Bây giờ khi bạn chạy sudo node app.jsnó sẽ hoạt động như mong muốn.


Chạy các kịch bản nút của bạn là root (sudo) không được khuyến khích. Sử dụng sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080và nghe trên cổng 8080 thay thế. stigok.tumblr.com/post/139320914543/ Từ
sshow

1
Vâng, bạn đã đúng, tôi đã liên kết với một cuộc thảo luận tốt hơn (mà tôi cũng đã trả lời, từ chối trách nhiệm ) và đã học được sau khi sử dụng phương pháp này ban đầu.
Kyle Chadha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.