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

monorepo中Express.js项目Eslint无法识别jsconfig路径别名如何解决

解决方案

1. 修复ESLint别名配置错误

你当前使用的eslint-import-resolver-alias插件配置规则不支持通配符*,首先修改.eslintrc.js配置:

// .eslintrc.js 新增root字段避免monorepo上层ESLint配置干扰
module.exports = {
  root: true, // 新增该行
  env: {
    es2021: true,
    node: true,
  },
  extends: [
    'airbnb-base',
  ],
  parserOptions: {
    ecmaVersion: 12,
    sourceType: 'module',
  },
  rules: {
    'no-console': 'error',
    'no-debugger': 'error',
  },
  settings: {
    'import/resolver': {
      alias: {
        map: [
          // 去掉通配符*,直接写别名前缀和对应相对路径
          ['@modules', './src/modules'],
        ],
        extensions: ['.js', '.json'],
      },
    },
  },
};

修改完成后重启编辑器的ESLint服务,即可解决import/no-unresolved校验报错。

额外检查:你给出的目录结构里src/modules/auth下只有auth.controller.js,如果没有手动创建auth.routes.js文件也会触发该报错,确认对应文件存在即可。


2. 解决eslint-import-resolver-jsconfig的SyntaxError报错

该报错是因为jsconfig.json存在JSON语法错误,JSON标准不允许尾逗号,打开jsconfig.json找到第150行附近,删除多余的逗号即可。如果确认语法无误,还可以明确指定jsconfig的路径来避免monorepo路径识别问题:

settings: {
  'import/resolver': {
    jsconfig: {
      config: './jsconfig.json', // 填写相对于.eslintrc.js的配置路径
    },
  },
}

3. 配置运行时路径别名(必做)

Node原生不识别自定义路径别名,ESLint校验通过后运行项目仍会报错,需要根据你使用的模块规范做对应配置:

  • 若使用CommonJS规范:安装module-alias包,在项目入口文件最顶部引入require('module-alias/register'),同时在package.json新增配置:
    "_moduleAliases": {
      "@modules": "src/modules"
    }
    
  • 若使用ESM规范:在package.json新增imports配置即可:
    "imports": {
      "#modules/*": "./src/modules/*"
    }
    
    注意Node原生ESM规范要求别名前缀必须为#,如果要保留@前缀需要配合es-module-alias等loader使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:54:03