为什么 TypeScript 路径别名不起作用

问题描述 投票:0回答:2

我有一个具有以下目录结构的 TypeScript 项目:

|- packages
| |- some-package
| |  |- src
| |     |- index.ts
| |- another-package
|    |- src
|       |- index.ts
|- tsconfig.json
|- package.json

tsconfig.json
文件包含以下内容:

{
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@company/some-package/*": ["some-package/src/*"],
      "@company/another-package/*": ["another-package/src/*"]
    }
  }
}

some-package/src/index.ts
有以下内容:

export type SomeType = {
   prop: string
}

another-package/src/index.ts
有以下内容:

import { SomeType } from '@company/some-ackage'

在 Visual Studio Code 中打开项目时,

another-package/src/index.ts
出现以下错误:

找不到模块“@company/some-package”或其相应的类型声明。

我该如何解决这个问题?

node.js typescript tsc
2个回答
0
投票

我认为

@company/some-package/*
@company/some-package
不匹配。


我认为通常你会让一个包有一个导出文件,然后进行设置以导入该文件。

{
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@company/some-package": ["some-package/src/index.ts"],
      "@company/another-package": ["another-package/src/index.ts"]
    }
  }
}

然后:

// some-package/src/index.ts
import * from './file-a'
import * from './file-b'

// Or just put things directly in here
export type SomeType = {
   prop: string
}

0
投票

我是同样的错误,但是当我为我的源文件夹使用别名路径@时。我必须安装

tsconfig-paths
并将其添加到 package.json 中的开发脚本中:

ts-node-dev --respawn --transpile-only -r tsconfig-paths/register src/index.ts

这样我就可以使用别名路径而不会出现任何错误。 我希望这对你也有用。

© www.soinside.com 2019 - 2024. All rights reserved.