You need to enable JavaScript to run this app. Next.js配置Airbnb规范ESLint后导入fs/promises报模块无法解析错误
优惠活动
大模型
产品
解决方案
定价
更多

Next.js配置Airbnb规范ESLint后导入fs/promises报模块无法解析错误

问题触发根因
  • 报错来自eslint-plugin-import的import/no-unresolved规则,和代码实际运行能力无关:Node.js v15.11 原生完整支持fs/promises内置模块,脚本运行正常是因为Node自身的模块解析机制可以直接识别内置核心模块,无需从项目node_modules目录查找。
  • 识别失败的核心逻辑:当前项目使用的eslint-plugin-import@2.22.1版本,默认内置模块识别列表仅覆盖到Node.js 14的核心模块集合,没有将Node15新增的fs/promises这类核心子路径模块纳入可识别白名单;加上配置中没有针对Node内置模块的解析规则做适配,插件误将内置模块当成项目依赖去本地目录检索,最终抛出路径解析失败的报错。
分步修复方案

方案1:配置解析器适配当前Node版本

在.eslintrc的settings字段下新增模块解析配置,让插件加载对应Node版本的内置模块白名单:

"settings": {
    "react": {
        "version": "detect"
    },
    "import/resolver": {
        "node": {
            "versions": {
                "node": "15.11"
            }
        }
    }
}

注意:该配置依赖eslint-import-resolver-node(为eslint-plugin-import的内置关联依赖,若执行后仍报错可手动安装为开发依赖)。配置生效后,插件会自动匹配指定Node版本的全部内置模块,直接识别fs/promises这类子路径核心模块。

方案2:临时豁免指定模块的解析报错

如果不想调整全局解析配置,可以在规则中单独配置白名单,快速消除这类已知内置模块的报错:

"rules": {
    // 保留原有所有规则配置
    "import/no-unresolved": [
        "error",
        {
            "ignore": ["^fs/promises$"]
        }
    ]
}

该方法仅能快速消除当前报错,无法自动识别后续新增的Node内置子路径模块。

方案3:升级依赖解决长期兼容问题

当前使用的eslint-plugin-import@2.22.1版本迭代较久,升级到2.25.0及以上版本后,插件会自动动态读取当前运行环境的Node内置模块列表,无需手动配置版本映射即可直接识别fs/promises这类内置子路径,同时可修复大量模块解析的边界兼容问题,是长期使用的最优选择。

内容的提问来源于stack exchange,提问作者Guillermo Brachetta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 04:45:03