ค้นหาเว็บไซต์

reactjs - ไม่สามารถหามอดูลหรือการประกาศประเภทที่เกี่ยวข้องของมัน Vite-React-Ts-SWC


ในสภาพแวดล้อมการพัฒนาของฉัน โปรเจกต์ทำงานได้อย่างสมบูรณ์ แต่เมื่อฉันพยายามปรับใช้ไปยัง vercel มันไม่สามารถสร้างและให้ข้อผิดพลาดแก่ฉันดังนี้:

src/App.tsx(9,18): ข้อผิดพลาด TS2307: ไม่สามารถหาโมดูล './pages/Home' หรือการประกาศประเภทที่สอดคล้องกันได้ src/App.tsx(11,19): ข้อผิดพลาด TS2307: ไม่สามารถหาโมดูล './pages/Login' หรือการประกาศประเภทที่สอดคล้องกันได้ src/App.tsx(13,22): ข้อผิดพลาด TS2307: ไม่สามารถหาโมดูล './pages/Archived' หรือการประกาศประเภทที่สอดคล้องกันได้

นี่คือ tsconfig.json ของฉัน:

{
  "compilerOptions": {
    "target": "ES2020",
    "useDefineForClassFields": true,
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "module": "ESNext",
    "skipLibCheck": true,

    /* Bundler mode */
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx",

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true
  },
  "include": ["src"],
  "references": [{ "path": "./tsconfig.node.json" }]
}

และไฟล์ tsconfig.node.json ของฉัน:

{
  "compilerOptions": {
    "composite": true,
    "skipLibCheck": true,
    "module": "ESNext",
    "moduleResolution": "bundler",
    "allowSyntheticDefaultImports": true
  },
  "include": ["vite.config.ts"]
}

ฉันลองเพิ่มพวกนี้แล้ว:

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@/*": ["*"]
    }
  },
  "include": ["src/**/*.ts", "src/**/*.tsx"],
  "exclude": ["node_modules"]
}

แต่มันใช้ไม่ได้ ฉันยังได้แก้ไขไฟล์ vite.config.ts โดยเพิ่มดังนี้:

resolve: {
  alias: {
    '@pages' : '/src/pages', 
  },
},

คำตอบ #1

ปัญหานี้เกี่ยวข้องกับเส้นทางสัมบูรณ์ กรุณาตรวจสอบปัญหาอื่นและวิธีการตั้งค่าเส้นทางสัมบูรณ์

tsconfig.json

{
  "compilerOptions": {
    ...,
    "baseUrl": "./",
    "paths": {
      "@/*": ["./src/*"]
    }

  },
  "include": ["vite.config.ts"]
}

"@/": ["./src/"] > หมายถึง "@" แทนที่ "./src/"

แต่คุณยังทำให้ Vite เข้าใจเส้นทางสัมบูรณ์ด้วย

ดังนั้น ตัวเลือกประเภทนี้จำเป็นต้องใช้ใน vite.config.json

resolve: {
  alias: {
    '@' : './src/*', 
  },
},
(It might be wrong)

คำตอบ #2

ขอบคุณสำหรับข้อมูลที่ให้มา แต่ฉันแก้ปัญหานั้นเรียบร้อยแล้วเมื่อวานนี้ สำหรับคนที่อาจเจอสถานการณ์เดียวกับที่ฉันเจอเมื่อวานนี้ สิ่งแรกคือ ต้องเข้าใจบันทึกข้อผิดพลาดอย่างแท้จริงและอ่านอย่างละเอียด ปัญหาที่ฉันพบคือ vercel สร้างโฟลเดอร์แยกชื่อ "Pages" (ตัวพิมพ์ใหญ่) ขึ้นมา ในขณะที่ฉันมีโฟลเดอร์ "pages" (ตัวพิมพ์เล็ก) ของฉันเอง และมันอ่านโฟลเดอร์ "Pages" ก่อนและไม่ได้รันเวอร์ชัน "pages" ของฉัน เพื่อตรวจสอบเรื่องนี้ vercel จะมีสำเนาของซอร์สโค้ดของคุณ วิธีแก้คือ ฉันลบโฟลเดอร์ "pages" ของฉันออกและ commit/push การเปลี่ยนแปลงก่อน เพื่อทำการ deploy ใหม่และ vercel จะบันทึกการเปลี่ยนแปลง (ก่อนอื่นคุณต้องทำสำเนาของโฟลเดอร์) จากนั้นคุณต้องนำโฟลเดอร์ที่คัดลอกไปวางที่เส้นทางที่ถูกต้องและ push การเปลี่ยนแปลงอีกครั้ง

ข้อจำกัดความรับผิดชอบ: สิ่งนี้อาจใช้ไม่ได้กับทุกคน

บทความที่เกี่ยวข้อง