reactjs - واردات مطلق: React + TypeScript + Vite


مسئله

من یک برنامه ریاکت دارم که با yarn create vite ساخته شده است

من میخواستم از واردات مطلق به جای "../../.." در فایلهایم استفاده کنم، اما در برنامه React + Vite من کار نمیکند. و همه چیز در IDE به خوبی کار میکند. این واردات من را تعریف میکند و به فایلهایم هدایت میکند.

این واردات من در فایل است.

import HomePage from '@/pages/HomePage/HomePage.tsx';

اما من یک خطا دقیقاً در زمان کامپایل دارم.

[plugin:vite:import-analysis] Failed to resolve import "@/pages/HomePage/HomePage.tsx" from "src\routes\Routes.tsx". Does the file exist?

چیزی که امتحان کردم

من فایل tsconfig.json خود را پیکربندی کردم و فیلدهای "baseUrl"، "paths" و "include" را مشخص کردم.

tsconfig.json:

{
  "ts-node": {
    "files": true
  },
  "compilerOptions": {
    "target": "ES2020",
    "useDefineForClassFields": true,
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "module": "ESNext",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "dist",
    "declaration": true,
    "strictNullChecks": true,
    "sourceMap": true,
    "strict": true,
    "skipLibCheck": true,
    "jsx": "react",
    "declarationDir": "types",
    "moduleResolution": "node",
    "allowSyntheticDefaultImports": true,
    "allowImportingTsExtensions": true,
    "emitDeclarationOnly": true,
    "baseUrl": "src",
    "paths": {
      "@/*": [
        "*"
      ]
    }
  },
  "include": [
    "src"
  ],
  "references": [{ "path": "./tsconfig.node.json"}]
}

vite.config.ts:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import reactRefresh from '@vitejs/plugin-react-refresh'
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react(), reactRefresh()],
  resolve: {
    alias: {
      '/@': path.resolve(__dirname, 'src'),
    },
  },
  css: {
    modules: {
      localsConvention: 'camelCaseOnly',
    },
  },
})

در WebStorm -> Preferences -> Editor -> Code Style -> JavaScript -> Imports من Use paths relative to the project, resource or source roots را تیک زدم.

در همین حال ESLint و WebStorm هیچ خطایی نمیدهند.

پاسخ شماره ۱

مشکل در فایل vite.config.ts بود. من یک «/» اضافی از مسیر حذف کردم و حالا درست کار میکند. از:

alias: {
  '/@': path.resolve(__dirname, 'src'),
},

به :

alias: {
  '@': path.resolve(__dirname, 'src'),
},