نمیتوان ماژول را پیدا کرد - خطای مسیر مستعار تایپاسکریپت


هنگام کامپایل خطایی دریافت میکنم که نمیتوانم آن را برطرف کنم :/

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

دلیلش را میدانی چرا اینطور است؟

ساختار پروژه:

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'

پاسخ شماره ۱

شما میتوانید از این دستور برای ردیابی مشکلات استفاده کنید:

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"] }
}

پاسخ شماره ۲

وای خدای من، بالاخره فهمیدم. baseUrl و paths باید داخل compilerOptions باشند و نه خارج از آن!