ค้นหาเว็บไซต์

typescript - ไม่สามารถเข้าถึง endpoints ของ node.js express ในเบราว์เซอร์ได้ แต่ใช้งานผ่าน postman ได้ปกติ


ฉันกำลังทำงานกับแอป Express ในเครื่อง ฉันมีเส้นทางในแอปของฉันที่มีลักษณะดังนี้

rootRouter.get('/', async (_: Request, res: Response) => {
  res.status(OK).send('Hello!');
});

รันผ่านบรรทัดคำสั่ง

node -r module-alias/register ./dist --env=development

พฤติกรรมของเบราว์เซอร์:

ฉันไม่สามารถเห็นเส้นทางผ่านเบราว์เซอร์ของฉัน localhost:6000 ฉันเห็นข้อความว่า "ไม่สามารถเข้าถึงเว็บไซต์นี้" มันเป็นแบบนี้สำหรับ URL ทั้งหมด ฉันไม่เห็นอะไรปรากฏในบันทึกเซิร์ฟเวอร์ของฉันเลย

พฤติกรรมของพนักงานส่งจดหมาย:

เมื่อฉันเข้าถึงเส้นทางเดียวกัน localhost:6000 ด้วยคำขอแบบ GET ใน Postman ฉันเห็นข้อความ "Hello!" บันทึก - GET/200 0.354 ms - 25

Heroku รัน

heroku local web -p=5000 (เรียกใช้ node -r module-alias/register ./dist --env=development เช่นเดียวกับด้านบน แต่ใช้พอร์ต 5000 แทน)

พฤติกรรมของเบราว์เซอร์:

ฉันสามารถเห็นเส้นทางผ่านเบราว์เซอร์ของฉัน localhost:5000 ฉันเห็น "สวัสดี!". ฉันเห็นคำขอในบันทึกของฉัน

8:44:45 PM web.1 |  GET / 200 0.517 ms - 25
8:44:45 PM web.1 |  GET /favicon.ico 200 1.928 ms - 12014

พฤติกรรมของพนักงานส่งจดหมาย:

ก็ใช้งานได้ด้วย ฉันเห็น "สวัสดี!" บันทึก - 9:01:29 PM web.1 | GET/200 0.193 ms - 25

โค้ดเซิร์ฟเวอร์แบบคร่าว ๆ:

const app = express();

app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(cookieParser());
app.use(morgan('dev'));
app.use('/', rootRouter); //contains my route that I posted above

// error handling
app.use((err: Error, _: Request, res: Response, __: NextFunction) => {
  const message = err.message;
  return res.status(500).json({ error: message });
});

const viewsDir = path.join(__dirname, 'views');
app.set('views', viewsDir);

const staticDir = path.join(__dirname, 'public');
app.use(express.static(staticDir));

คำตอบ #1

ปัญหา

ฉันตระหนักว่าปัญหาคืออะไร โดยเฉพาะพอร์ต 6000 ถูกห้ามโดยเว็บเบราว์เซอร์หลายตัว https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc

มันคือไฟร์ฟอกซ์ที่ช่วยให้ฉันเข้าใจมัน - เนื่องจากข้อความแสดงข้อผิดพลาดของพวกเขามีความเฉพาะเจาะจงมากกว่าของโครม

ข้อความแสดงข้อผิดพลาดของ Firefox:

"ที่อยู่นี้ถูกจำกัด ที่อยู่นี้ใช้พอร์ตเครือข่ายซึ่งปกติใช้เพื่อวัตถุประสงค์อื่นที่ไม่ใช่การท่องเว็บ Firefox ได้ยกเลิกคำขอเพื่อปกป้องคุณ"