วิธีการเปลี่ยนค่าของ process.env.PORT ใน node.js?


คำตอบ:


281

สำหรับการเรียกใช้เพียงครั้งเดียว (จากพรอมต์ unix shell):

$ PORT=1234 node app.js

ถาวรมากขึ้น:

$ export PORT=1234
$ node app.js

ในWindows :

set PORT=1234

ใน Windows PowerShell :

$env:PORT = 1234

4
เพื่อประโยชน์ของเอกสารmsdn.microsoft.com/en-us/library/windows/desktop/ ......สำหรับผู้ใช้ windows
WraithKenny

3
นอกจากนี้สำหรับ Powershell ก็$env:PORT = 80 technet.microsoft.com/en-us/library/ff730964.aspx
WraithKenny

VAR_1=value VAR_2=11827 node-> ใช้ช่องว่างเพื่อใช้ตัวแปรมากกว่าหนึ่งตัวในคำสั่งเดียวกัน
p4bloch

15

คุณสามารถใช้โซลูชันข้ามแพลตฟอร์มhttps://www.npmjs.com/package/cross-env

$ cross-env PORT=1234

นี่อาจเป็นทางออกที่ดีที่สุด มีข้อผิดพลาดมากเกินไปสำหรับเทอร์มินัลต่างๆ ฉันใช้เวลาประมาณ 40 นาทีจนกระทั่งฉันพบcross-envปัญหานี้หมดไปและใช้งานได้
adi518

8

ใช้คำสั่งด้านล่างเพื่อตั้งหมายเลขพอร์ตในกระบวนการโหนดในขณะที่รันโปรแกรม JS JS:

set PORT =3000 && node file_name.js

ชุดพอร์ตสามารถเข้าถึงได้ในรหัสเป็น

process.env.PORT 

2

แก้ไข:ตามความเห็นของ @sshow หากคุณพยายามเรียกใช้แอปโหนดของคุณในพอร์ต 80 ด้านล่างไม่ใช่วิธีที่ดีที่สุดที่จะทำ นี่คือคำตอบที่ดีกว่า: ฉันจะรัน Node.js บนพอร์ต 80 ได้อย่างไร

คำตอบเดิม:

หากคุณต้องการทำสิ่งนี้เพื่อทำงานบนพอร์ต 80 (หรือต้องการตั้งค่าตัวแปร env อย่างถาวรมากขึ้น )

  1. เปิดโปรไฟล์ทุบตีของคุณ vim ~/.bash_profile
  2. เพิ่มตัวแปรสภาพแวดล้อมลงในไฟล์ export PORT=80
  3. เปิดไฟล์ config sudoers sudo visudo
  4. เพิ่มบรรทัดต่อไปนี้ไปยังไฟล์ทุกประการ Defaults env_keep +="PORT"

ตอนนี้เมื่อคุณเรียกใช้sudo node app.jsมันควรจะทำงานได้ตามที่ต้องการ


ไม่แนะนำให้รันสคริปต์โหนดของคุณเนื่องจากรูท (sudo) ใช้sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080และฟังบนพอร์ต 8080 แทน stigok.tumblr.com/post/139320914543/…
sshow

1
ใช่คุณพูดถูกฉันเชื่อมโยงกับการสนทนาที่ดีขึ้น (ซึ่งฉันได้ตอบข้อปฏิเสธความรับผิดชอบ ) และเรียนรู้หลังจากเริ่มใช้วิธีนี้
Kyle Chadha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.