Tôi có một ứng dụng Node.js / Express.js đang chạy trên máy chủ của mình chỉ hoạt động trên cổng 3000 và tôi đang cố gắng tìm hiểu lý do. Đây là những gì tôi đã tìm thấy:
- Mà không chỉ định một cổng (
app.listen()
), chạy ứng dụng nhưng trang web không tải. - Trên cổng 3001 (
app.listen(3001)
) hoặc bất kỳ cổng nào khác không được sử dụng, ứng dụng chạy nhưng trang web không tải. - Trên cổng 2999, ứng dụng gặp lỗi do có thứ khác đang sử dụng cổng đó.
- Trên cổng 3000, ứng dụng chạy và trang web tải tốt.
Tôi biết rằng ứng dụng Express mặc định ở cổng 3000. Nhưng kỳ lạ là ứng dụng của tôi chỉ chạy khi tôi bắt nó chạy trên cổng 3000 ( app.listen(3000)
) một cách rõ ràng .
Tôi tìm thấy điều này trên dòng 220 của /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Điều đang làm như đã nêu trước đây: đặt cổng thành những gì được chỉ định hoặc thành 3000 nếu không có gì được chỉ định.
Làm cách nào để làm cho ứng dụng của tôi hoạt động trên một cổng khác, chẳng hạn như 8080 hoặc 3001?
Cảm ơn!
Chỉnh sửa: Mẫu mã (Ứng dụng rất đơn giản / Nút nhanh)
var express = require("express");
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set [value] in app.set('port', [value]).
app.listen(3000);
.listen()
. Ở trên khi tôi nói, "ứng dụng đang chạy", điều này cũng giống như bạn nói, "không có lỗi khi chạy ứng dụng". Khi tôi nói, "trang web không tải", điều này cũng giống như bạn nói, "không thể truy cập từ trình duyệt". Tất cả truy cập từ cùng một máy (máy chủ của tôi). Cảm ơn vì bạn đã phản hồi.
$ supervisor app.js
hoặc $ PORT=[PORT] node app.js
khi tôi muốn đặt biến cổng môi trường. Tôi sẽ đưa ra một mẫu mã.
port
được yêu cầu bởi.listen()
, vì vậy bạn không nên thử mà không có. 2) Bạn có gặp bất kỳ lỗi nào khi chạy ứng dụng không? Hay nó chỉ có vẻ không thể truy cập được từ trình duyệt? 3) Bạn đang cố gắng truy cập trang web trên cùng một máy vớilocalhost:3000
,localhost:3001
vv? Nếu bạn đang sử dụng hai máy, một máy khách và một máy chủ, bạn sẽ cần thêm ngoại lệ vào tường lửa trên máy chủ để cho phép Node nhận yêu cầu từ máy khách.