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

webpack - Monorepo: (NextJS 13 + Typescript) การวิเคราะห์โมดูลล้มเหลว


ฉันกำลังพยายามย้ายแอป Next.js 13 ที่ใช้งานอยู่ในปัจจุบันไปยัง monorepo เดียว โดยพื้นฐานแล้วฉันสร้างรีโปใหม่โดยใช้ npx create-turbo@latest แล้วจากนั้นก็ย้ายรีโปที่มีอยู่ของฉัน (ขอเรียกว่า "frontend") ไปที่โฟลเดอร์ apps/ หลังจากนั้นฉันก็ไปและเพิ่ม dependency 'ui' ใน apps/frontend/package.json:

{
    "name": "frontend",
    "version": "0.1.0",
    "private": true,
    "dependencies": {
        ...
        "ui": "*",
    }
    ...
}

และเพิ่มใน next.config.js ตัวเลือกการแปลงโค้ด:

experimental: {
    transpilePackages: ['ui'],
}

จนถึงตอนนี้ทุกอย่างดูดีทุกอย่างดูเหมือนจะทำงานได้ อย่างไรก็ตามหลังจากนี้ฉันย้ายคอมโพเนนต์จากโปรเจกต์ที่มีอยู่ไปที่โฟลเดอร์ UI เพิ่ม dependencies ที่เกี่ยวข้องทั้งหมด และเมื่อฉันรันมันก็ได้รับ:

frontend:dev: error - ../../packages/ui/Button/Button.tsx
frontend:dev: Module parse failed: The keyword 'interface' is reserved (11:0)
frontend:dev: You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
frontend:dev: | import classNames from 'classnames';

ฉันกำลังพลาดการตั้งค่าประเภทใดอยู่หรือไม่?

ข้อมูลสิ่งแวดล้อม

Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 21.6.0: Mon Aug 22 20:19:52 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T6000
Binaries:
  Node: 16.13.2
  npm: 8.1.2
  Yarn: 1.22.19
  pnpm: N/A
Relevant packages:
  next: 13.0.4
  eslint-config-next: 12.3.4
  react: 18.2.0
  react-dom: 18.2.0

คำตอบ #1

สำหรับใครก็ตามที่เจอปัญหานี้ มันเป็นความผิดของฉันเพราะฉันใช้ npx create-turbo@latest เพื่อสร้าง monorepo เริ่มต้น แต่จากนั้นฉันลืมอัปเกรดโปรเจกต์ที่มีอยู่ของฉันเป็น next13 ทันทีหลังจากย้ายมัน