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 ได้ยกเลิกคำขอเพื่อปกป้องคุณ"