javascript - Svelte TS App.svelte er ikke et modul ts(2306)


Jeg bruker Vite svelete-ts-mal. Jeg endret prosjektstrukturen for å pakke hver side i én enkelt fil uten chunks. Alt fungerer bortsett fra TypeScript-importer for .svelte-utvidelser. Jeg vet ikke hvor jeg gjorde feil konfigurasjon for TypeScript, men det gir en feil når jeg prøver å importere Svelte-komponenten.

Problem: Når jeg prøver å importere App.svelte, sier den src/components/App.svelte' er ikke et modul.ts(2306)

Forventet oppførsel: Det skal importere Svelte-komponenten og gjenkjenne den som en Svelte-modul

Hva jeg prøvde å gjøre: Jeg prøvde å legge til types-egenskapen i tsconfig.json-filen, men det hjalp ikke

Koden der feilen oppstår:

import App from '@components/App.svelte';

const app = new App({
  target: document.getElementById('app'),
});

export default app;

App.svelte-kode:

<script lang="ts">
  import '@assets/tailwind.css';

  import { googleFontsUrl } from '@utils/fonts';
  import type { SvelteComponent } from 'svelte';

  export let component: SvelteComponent;
  export let componentProps: Record<string, any>;
</script>

<svelte:head>
  <link href={googleFontsUrl} rel="stylesheet" />
</svelte:head>

{#if component}
  <svelte:component this={component} {...componentProps} />
{/if}

tsconfig.json

{
  "extends": "@tsconfig/svelte/tsconfig.json",
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "useDefineForClassFields": true,
    "resolveJsonModule": true,
    "allowJs": true,
    "checkJs": true,
    "baseUrl": ".",
    "paths": {
      "@assets/*": ["src/assets/*"],
      "@components/*": ["src/components/*"],
      "@dev/*": ["src/dev/*"],
      "@libs/*": ["src/libs/*"],
      "@services/*": ["src/services/*"],
      "@types/*": ["src/types/*"],
      "@utils/*": ["src/utils/*"]
    }
  },
  "include": [
    "configs/**/*",
    "scripts/**/*",
    "src/**/*.d.ts",
    "src/**/*.ts",
    "src/**/*.js",
    "src/**/*.svelte"
  ],
  "exclude": ["node_modules"]
}

P.S. Jeg fullførte ikke hele implementeringen som jeg ønsket, vær så snill å ikke bekymre deg for koden, den bør fungere som jeg forventer

Flere detaljer: Noen ganger gir det ikke en feil når jeg importerer Svelte-komponentene. Jeg kan ikke forstå hva som forårsaker feilen.

Svar #1

Problemet er at du ikke har erklært App.svelte som en modul ennå, du har bare prøvd å bruke den som om det var en.

Du må gjøre det til en TS-modul.

Prøv dette:

<script lang="ts" type="module">

Relaterte artikler