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

配置tsconfig的paths别名路径无效,无法引入@shared模块

TypeScript路径别名不生效的问题排查与解决

问题原因分析

你的配置存在三个核心问题:

  1. Paths别名键格式错误:@shared的键没有加/*,导致TypeScript无法匹配@shared/greet这类子路径导入
  2. TS未扫描shared目录:include数组仅包含src,TypeScript不会解析shared下的文件,因此无法识别其中的模块和类型
  3. 打包工具未同步别名配置:TypeScript的paths仅用于类型检查,实际运行/打包时需要bundler(比如你用的Bun)同步配置别名

解决步骤

1. 修正tsconfig.json配置

修改paths的键格式,并将shared加入include数组:

{
  "compilerOptions": {
    "target": "ES2020",
    "useDefineForClassFields": true,
    "module": "ESNext",
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "skipLibCheck": true,

    /* Bundler mode */
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": false,
    "isolatedModules": true,
    "moduleDetection": "force",
    "noEmit": false,

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,
    "noUncheckedSideEffectImports": true,

    "baseUrl": "./",
    "paths": {
      "@/*": ["./src/*"], // 修正@的别名,支持@/xxx格式导入src下文件
      "@shared/*": ["./shared/*"] // 加*匹配所有子路径
    }
  },
  "include": ["src", "shared"], // 让TS扫描shared目录
  "exclude": ["node_modules", "Dist"]
}

2. 同步打包工具(Bun)的别名配置

因为你的项目用了Bun,需要在bunfig.toml或package.json中添加别名:

方式一:使用bunfig.toml

在项目根目录创建或修改bunfig.toml:

[alias]
"@/*" = "./src/*"
"@shared/*" = "./shared/*"

方式二:使用package.json

在package.json中新增alias字段:

{
  // ...其他配置
  "alias": {
    "@/*": "./src/*",
    "@shared/*": "./shared/*"
  }
}

3. 验证导入

现在可以正常使用:

// src/main.ts
import greet from '@shared/greet'; // 若为默认导出
// 或
import { greet } from '@shared/greet'; // 若为命名导出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:02:36