Express.js는 Node.js에서 웹 애플리케이션을 구축하는 데 널리 사용되는 프레임워크이지만 숙련된 개발자라도 디버그하기 까다로울 수 있는 오류에 직면합니다. 이 가이드에서는 가장 일반적인 Express.js 오류 중 일부를 다루고, 오류가 발생하는 이유를 설명하며, 애플리케이션을 다시 정상으로 되돌릴 수 있는 실질적인 수정 사항을 제공합니다.
이 오류는 일반적으로 동일한 요청에 대해 여러 응답을 보내려고 할 때 발생합니다. 예를 들어, 경로 핸들러에서 실수로 res.send() 또는 res.json()을 두 번 이상 호출할 수 있습니다.
예:
app.get('/example', (req, res) => { res.send('First response'); res.send('Second response'); // This will throw the error. });
수정:
요청당 하나의 응답만 보내도록 하세요. 응답을 보낸 후 추가 실행을 방지하려면 조건부 논리 또는 반환 문을 사용하세요.
app.get('/example', (req, res) => { if (!req.query.param) { return res.status(400).send('Bad Request'); } res.send('Valid Request'); });
미들웨어가 제대로 연결되지 않았거나 그 안에서 next()가 호출되지 않은 경우에 발생합니다. 미들웨어 기능은 명시적으로 다음 미들웨어나 경로 핸들러에 제어권을 전달해야 합니다.
예:
app.use((req, res) => { console.log('Middleware executed'); // Forgot to call next() }); app.get('/test', (req, res) => { res.send('Hello, World!'); });
수정:
미들웨어가 응답을 종료하지 않는 한 next()를 호출하세요.
app.use((req, res, next) => { console.log('Middleware executed'); next(); // Pass control to the next middleware or route });
req.body가 정의되지 않은 경우 express.json() 또는 express.urlencoded()와 같은 본문 구문 분석 미들웨어를 사용하는 것을 잊었기 때문일 가능성이 높습니다.
예:
app.post('/submit', (req, res) => { console.log(req.body); // undefined });
수정:
앱 초기화에 본문 구문 분석 미들웨어를 포함하세요.
app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.post('/submit', (req, res) => { console.log(req.body); // Now it works res.send('Data received'); });
이 오류는 수신 요청과 일치하는 경로가 없을 때 발생합니다. 기본적으로 Express는 404 핸들러를 제공하지 않습니다.
수정:
404 오류를 처리하려면 경로 정의 끝에 포괄적인 미들웨어를 추가하세요.
app.use((req, res) => { res.status(404).send('Page Not Found'); });
이는 앱이 바인딩하려는 포트를 이미 다른 프로세스에서 사용하고 있는 경우에 발생합니다.
Error: listen EADDRINUSE: address already in use :::3000
수정:
충돌하는 프로세스를 찾아서 종료하거나 다른 포트를 사용하십시오. 프로그래밍 방식으로 오류를 처리할 수도 있습니다.
const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server running on port ${port}`); }).on('error', (err) => { if (err.code === 'EADDRINUSE') { console.error(`Port ${port} is already in use. Please use a different port.`); } });
Express.js 오류는 실망스러울 수 있지만 근본 원인을 이해하면 문제를 더 쉽게 해결할 수 있습니다. 이러한 일반적인 수정 사항을 사용하면 애플리케이션을 디버그하고 프로젝트를 원활하게 실행할 수 있는 능력이 향상됩니다.
이 가이드가 도움이 되었다면 ❤️ 아이콘을 누르고 저를 팔로우하여 더 많은 JavaScript 팁과 요령을 확인하세요!
위 내용은 Express.js의 주요 실수와 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!