typescript - UI-pakke i Turborepo producerer TS-fejl intermitterende - Kunne ikke finde en deklarationsfil for modulet


Jeg prøver lige nu en Turborepo af, og jeg har problemer med en TS-fejl, jeg tilsyneladende ikke kan løse.

Fejlmeddelelsen lyder:

Kunne ikke finde en deklarationsfil for modulet '@myapp/ui'. 'C:/myapp/packages/ui/dist/index.mjs' har implicit typen 'any'.

Prøv npm i --save-dev @types/myapp__ui, hvis det findes, eller tilføj en ny deklarationsfil (.d.ts) indeholdende declare module '@myapp/ui';

Mit hovedproblem er, at dette er intermitterende. Nogle gange er fejlen der, og andre gange forsvinder den bare, når TS Serveren genstartes, og så bliver den væk i flere timer.

Her er min projektstruktur:

.
├── apps
│   └── web
│       ├── src
│       │   └── [lang]
│       │       ├── layout.tsx
│       │       └── page.tsx
│       ├── package.json
│       └── tsconfig.json
├── packages
│   └── ui
│       ├── dist
│       ├── src
│       ├── package.json
│       ├── tsup.config.ts
│       └── tsconfig.json
├── package.json
└── turbo.json

Indholdet af mine packages/ui/package.json:

{
  "name": "@myapp/ui",
  "version": "0.0.0",
  "sideEffects": false,
  "main": "./dist/index",
  "types": "./dist/index.d.mts",
  "exports": {
    ".": {
      "import": {
        "types": "./dist/index.d.mts",
        "default": "./dist/index.mjs"
      }
    }
  },
  "scripts": {
    "build": "tsup --format esm --minify",
    "dev": "tsup --format esm --minify --watch",
    "check-types": "tsx --noEmit",
    "lint": "eslint src/ --max-warnings 0",
    "ui:add": "pnpm dlx shadcn-ui@latest add"
  },
  "peerDependencies": {
    "next": "^14.1.1",
    "react": "^18.2.0"
  },
  "devDependencies": {
    "@myapp/eslint-config": "workspace:*",
    "@myapp/tailwind-config": "workspace:*",
    "@myapp/typescript-config": "workspace:*",
    "autoprefixer": "^10.4.16",
    "eslint": "^8.57.0",
    "postcss": "^8.4.38",
    "tailwindcss": "^3.4.3",
    "tsup": "^8.0.2",
    "typescript": "^5.3.3"
  }      
}

Jeg har prøvet at ændre "types" til "dist/index", hvilket virker midlertidigt, og så kommer fejlen tilbage, og så omvendt, hvis jeg ændrer det til "dist/index.d.mts".

Den korrekte index.d.mts er faktisk i dist-mappen, og alt ser ud til at være korrekt deri.

Her er min tsup.config.ts:

import { defineConfig, Options } from "tsup"

export default defineConfig((options: Options) => ({
  entry: ["src/**/*.tsx"],
  format: ["esm"],
  esbuildOptions(options) {
    options.banner = {
      js: '"use client"',
    }
  },
  dts: true,
  clean: true, // Clears the dist
  external: ["react", "next-intl"],
  ...options,
}))

Relaterede artikler