Express拆分路由后遇路由找不到及SIGINT退出错误的解决求助
解决Express路由拆分后路由找不到及进程SIGINT退出问题
问题根源
你的productRoutes.js文件中直接使用了products变量,但没有导入该数据模块,这会导致运行时抛出变量未定义错误,进而触发Express路由参数处理异常,最终导致Node.js进程因未捕获的错误以SIGINT信号退出。
修复步骤
在productRoutes.js中导入products数据
修改productRoutes.js,在顶部添加products的导入语句(注意路径要匹配你的文件结构):import express from 'express'; // 新增导入语句,路径根据实际文件层级调整 import products from '../data/products.js'; const router = express.Router(); router.get('/', (req, res) => { res.json(products); }); router.get('/:id', (req, res) => { const product = products.find((p) => p._id === req.params.id); res.json(product); }); export default router;验证路由可用性
重启服务器后,访问/api/products和/api/products/:id即可正常返回数据,路由找不到的错误会消失。
补充优化建议
为避免后续类似未处理错误直接导致进程崩溃,建议在主Express文件的所有路由之后添加全局错误捕获中间件:
// 放在app.listen之前 app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('服务器内部错误'); });
内容的提问来源于stack exchange,提问作者Siddik Mulla
相关产品推荐
相关产品推荐

