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"
],
}
