找不到模块 - TypeScript 路径别名错误

9

编译时出现无法修复的错误:/

index.ts:2:19 - error TS2307: Cannot find module '@shared'

有什么想法是为什么?

项目结构:

enter image description here

tsconfig.json:

{
  "compilerOptions": {
    "outDir": "../../build/backend",
  },
  "extends": "../../configs/tsconfig.base.json",
  "references": [
    {
      "path": "../shared"
    }
  ],
  "paths": {
    "@shared": [
      "../shared/index"
    ]
  }
}

backend/index.ts:

import 'module-alias/register'
import { x } from '@shared'

console.log(x)

shared/index.ts:

export const x = 'this is shared index'
2个回答

13

您可以使用此命令来追踪问题:

tsc --traceResolution

我发现'@shared'被用作文件夹名称,所以它看起来像这样:

Resolving module name '@shared' relative to base url 'D:/apps/my-app/src' - 'D:/apps/my-app/src/@shared'.

当我将别名更改为“shared”并设置了baseUrl后,所有内容开始正常工作:

{
  "compilerOptions": {
    "moduleResolution": "node",
    "baseUrl": "../",
    "outDir": "../../build/backend"
  },
  "extends": "../../configs/tsconfig.base.json",
  "references": [
    {
      "path": "../shared"
    }
  ],
  "paths": { "shared": ["shared/index"] }
}

嗨,我遇到了类似的问题,但这似乎没有帮助。如果您有时间,您认为您能否也检查一下我的问题?谢谢。https://stackoverflow.com/questions/67281799/typescript-aliases-not-working-properly-when-i-init-dependency - TheMan68

7

天啊,我终于弄清楚了。 baseUrl和paths应该在compilerOptions中而不是外面!


4
不好意思,我也有同样的问题哈哈。谢谢你发帖让我意识到我的错误。 - Themis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接