Saya memiliki aplikasi Node.js / Express.js yang berjalan di server saya yang hanya berfungsi pada port 3000 dan saya mencoba mencari tahu alasannya. Inilah yang saya temukan:
- Tanpa menentukan port (
app.listen()
), aplikasi berjalan tetapi halaman web tidak memuat. - Pada port 3001 (
app.listen(3001)
) atau port lain yang tidak digunakan, aplikasi berjalan tetapi halaman web tidak dimuat. - Pada port 2999, aplikasi melontarkan kesalahan karena ada hal lain yang menggunakan port itu.
- Pada port 3000, aplikasi berjalan dan halaman web dimuat dengan baik.
Saya tahu bahwa aplikasi Express secara default menggunakan port 3000. Tapi anehnya, aplikasi saya hanya berjalan ketika saya secara eksplisit membuatnya berjalan pada port 3000 ( app.listen(3000)
).
Saya menemukan ini di baris 220 dari /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Yang melakukan seperti yang dinyatakan sebelumnya: mengatur port ke apa yang ditentukan atau ke 3000 jika tidak ada yang ditentukan.
Bagaimana saya dapat membuat aplikasi saya berfungsi pada port yang berbeda seperti 8080 atau 3001?
Terima kasih!
Edit: Contoh Kode (Aplikasi Node / Ekspres Sangat Sederhana)
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);
port
diperlukan oleh.listen()
, jadi Anda tidak boleh mencoba tanpa. 2) Apakah Anda mendapatkan kesalahan saat menjalankan aplikasi? Atau apakah itu hanya tampak tidak dapat diakses dari browser? 3) Apakah Anda mencoba untuk mengakses situs web pada mesin yang sama denganlocalhost:3000
,localhost:3001
, dll? Jika Anda menggunakan dua mesin, satu klien dan satu server, Anda harus menambahkan pengecualian ke firewall di server untuk mengizinkan Node menerima permintaan dari klien.