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

node.js - ข้อผิดพลาดของ Node: ไม่สามารถหามอดูลได้ - typescript API สำหรับมอดูลที่กำหนดเองที่ฉันส่งออกสคีมาและอินเทอร์เฟซของ mongoose


ฉันมีโมดูล TypeScript ชื่อ @tlabs/models ซึ่งฉันกำลังเพียงแค่ส่งออกใน index.ts:

export * from '../models......'

ในแต่ละไฟล์ ฉันมีบางอย่างประมาณนี้:

export const Project = typedModel('projects', ProjectSchema);

และการขึ้นต่อเพียงอย่างเดียวของฉันคือ ts-mongoose ซึ่งถูกนำเข้าในแต่ละไฟล์เพียงแค่:

import { createSchema, Type, typedModel, ExtractProps } from 'ts-mongoose';

ts-mongoose เป็นไลบรารีที่เป็น dependencies ซึ่งตัวมันเองต้องการ mongoose และ mongoose types

ในโปรเจค TypeScript Node ของฉัน ฉันมี ts-mongoose, mongoose และ @tlabs/models เป็น dependencies และ @types/mongoose เป็น dev dependency.

การรัน tsc ปกติดี ไฟล์ถูกคอมไพล์และไม่มีข้อผิดพลาดใดถูกโยนออกมา แต่เมื่อพยายามรันไฟล์จริง ๆ จะเกิดข้อผิดพลาดดังนี้:

Error: Cannot find module '@tlabs/models'

ฉันได้ติดตั้งโมดูลทั้งหมดใหม่หลายครั้งแล้วและตรวจสอบไฟล์ package.json รวมถึงไฟล์จริงบนดิสก์และผ่าน vscode แล้ว พวกมันอยู่ตรงนั้น

ฉันพลาดอะไรไปบ้าง?

ไฟล์ tsconfig ของฉันคือ:

{
  "include": ["src/**/*"],
  "exclude": ["node_modules", "./node_modules", "./node_modules/*"],
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "allowJs": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist",
    "noImplicitAny": false,
    "alwaysStrict": true,
    "strictNullChecks": true,
    "types": [],
    "lib": [],
    "experimentalDecorators": true
  }
}

คำตอบ #1

การตั้งค่า TS สุดท้ายของฉันสำหรับโมเดลที่ส่งออกของฉัน:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "declaration": true,
        "declarationMap": true,
        "sourceMap": true,
        "outDir": "lib",
        "strict": true,
        "esModuleInterop": true
    },
    "include": ["src"]
}

และการกำหนดค่า package.json ที่เกี่ยวข้อง:

{
    "main": "lib/index.js",
    "types": "lib",
    "scripts": {
        "tsc": "tsc",
        "build": "tsc -p ."
    },
    "files": [
        "lib"
    ],
}