You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置ESLint后被要求移动函数声明,应移至何处?

解决ESLint提示「移动函数声明」的问题

问题根源

你提交的代码中,在router.post的回调函数内部使用了函数声明(createPostHandler),触发了ESLint的no-inner-declarations规则——该规则禁止在块级作用域(比如回调、if/for代码块)内声明函数,要求函数声明必须放在全局作用域或函数级作用域的顶部。

修复方案

方案1:调整函数位置(推荐)

把内部声明的函数移到块级作用域之外,比如文件的顶层作用域,或者包裹路由的函数作用域内,示例如下:

// 将函数移到回调外部
async function createPostHandler(req, res) {
  const { title, content, author } = req.body;
  const post = new Post({ title, content, author });
  await post.save();
  res.status(201).json(post);
}

router.post('/', async (req, res) => {
  try {
    await createPostHandler(req, res);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
});

方案2:修改ESLint规则(不推荐)

如果不想调整代码结构,可以在ESLint配置文件(如.eslintrc.js、.eslintrc.json)中关闭该规则:

{
  "rules": {
    "no-inner-declarations": "off"
  }
}

这种方式会跳过规范检查,长期来看不利于代码风格统一,建议优先选择方案1。

内容的提问来源于stack exchange,提问作者Ewa Olczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:26:05