带有来自 Typescript 的路径的 Monorepo 不起作用

J V*_*J V 7 javascript typescript tsconfig monorepo yarn-workspaces

我有具有以下文件结构的 monorepo(纱线工作区):

??? client                (workspace @client)
?   ??? package.json
?   ??? tsconfig.json     (extended tsconfig)
??? server                (workspace @server)
?   ??? getData.ts
?   ??? package.json
?   ??? tsconfig.json     (extended tsconfig)
??? shared
?   ??? sanitizeData.ts
??? package.json          (monorepo root)
??? tsconfig.json         (base tsconfig)
Run Code Online (Sandbox Code Playgroud)

我想从shared/sanitizeData.tsin使用函数server/getData.ts

我尝试paths从 Typescript 中使用,根据文档,它看起来很简单,但我做错了:

error TS2307: Cannot find module '@shared/sanitizeData'.
Run Code Online (Sandbox Code Playgroud)

server/tsconfig.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "baseUrl": ".",
    "rootDir": "../",
    "outDir": "build",
    "paths": {
      "@shared/*": ["shared/*"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

server/getData.js

??? client                (workspace @client)
?   ??? package.json
?   ??? tsconfig.json     (extended tsconfig)
??? server                (workspace @server)
?   ??? getData.ts
?   ??? package.json
?   ??? tsconfig.json     (extended tsconfig)
??? shared
?   ??? sanitizeData.ts
??? package.json          (monorepo root)
??? tsconfig.json         (base tsconfig)
Run Code Online (Sandbox Code Playgroud)

请问你能帮帮我吗?

小智 8

路径是相对于 的baseUrl,所以在你的情况下你必须替换["shared/*"]["../shared/*"]