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

turborepo typescript สร้าง node app พร้อมกับ dependencies ของ workspace


กำลังพยายามสร้าง API แบบ Express ภายใน workspace ของ pnpm turborepo

API มี @my/shared เป็นการพึ่งพาซึ่งเป็นแพ็กเกจในพื้นที่ทำงานท้องถิ่น

ฉันไม่สามารถทำให้การสร้างสำเร็จได้ ฉันคิดว่าสิ่งที่ฉันต้องทำให้ได้คือสร้างไลบรารีที่แชร์ได้และรวมมันในโปรเจกต์ api แต่เพื่อทำสิ่งนี้ฉันจะต้องสามารถเปลี่ยนคำสั่ง import ทั้งหมดเพื่อให้ node หาโมดูลเจอเพราะมันถูก import เป็น @my/shared

โครงสร้าง :

apps/
  /api <- express (depends on @my/shared)
packages/
  /shared <- @my/shared

ไฟล์ tsconfig พื้นฐาน

{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "checkJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "esModuleInterop": true,
    "module": "CommonJS",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "noUncheckedIndexedAccess": true,
    "composite": false,
    "declaration": true,
    "declarationMap": true,
    "inlineSources": false,
    "outDir": "./dist"
  },
  "exclude": ["node_modules", "build", "dist", ".next", ".expo"]
}

tsconfigs ที่ใช้ร่วมและแสดงออก

"extends": "../../tsconfig.json",
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "~/*": ["*"]
    },
    "module": "commonjs",
    "outdir": "./dist"
  },
 "include": [
    "src",
  ]
}

ฉันเพียงแค่อยากจะแปลงแอป ts นี้เป็น js เพื่อรันในโหมด production ด้วย pm2

ฉันพบแหล่งข้อมูลมากมายแต่ไม่สามารถหาสิ่งใดที่จะช่วยฉันทำให้สำเร็จได้

ฉันได้ลองรัน tsc จากโฟลเดอร์รากแล้ว การรันผลลัพธ์ใน node ให้ข้อผิดพลาด:

`"ข้อผิดพลาด: ไม่สามารถหาโมดูล 'express' ได้`

ฉันได้ลองรัน tsc ในระดับ API ซึ่งทำให้เกิดข้อผิดพลาดดังต่อไปนี้เมื่อรัน pnpm ใน /dist เพื่อติดตั้ง dependencies

ERR_PNPM_WORKSPACE_PKG_NOT_FOUND: @my/shared

คำตอบ #1

ฉันเคยมีปัญหาคล้ายกันและพบเอกสารอ้างอิงและสร้าง Express ได้สำเร็จ

  • https://github.com/Riley-Brown/turbo-repo-express-next-example
  • https://github.com/vercel/turbo/tree/main/examples/kitchen-sink

คุณสามารถใช้ tsup เพื่อแปลงซอร์สโค้ดได้