ESLint报Unexpected block statement surrounding arrow body怎么解决?
报错原因
这个是ESLint的arrow-body-style规则触发的校验提示,该规则默认要求:当箭头函数的逻辑仅包含返回单个值的操作时,省略冗余的块级大括号、return关键字,直接使用箭头函数隐式返回写法。
修复方案
方案1:按规则简化代码(推荐)
你给出的catchAsync函数外层箭头函数仅包含返回中间件函数的逻辑,直接简化为隐式返回即可解决报错:
// 简化后的catchAsync,去掉外层多余的大括号和return关键字 const catchAsync = fn => (req, res, next) => { fn(req, res, next).catch(next) } // 下方createTour的逻辑包含多行语句,无需修改 exports.createTour = catchAsync(async (req, res, next) => { const newTour = await Tour.create(req.body); res.status(201).json({ status: 'success', data: { tour: newTour } }) })
方案2:调整ESLint规则
如果不想遵循该隐式返回的写法要求,可以在项目的ESLint配置文件(如.eslintrc.js、.eslintrc.json)中修改规则:
// 关闭该规则校验 "arrow-body-style": "off" // 或配置为强制要求所有箭头函数都带大括号 "arrow-body-style": ["error", "always"]
内容的提问来源于stack exchange,提问作者Jag99
相关产品推荐
相关产品推荐

