Vyhledávání na webu

node.js - Správný způsob použití TypeScript souborů z modulů v TypeScript Node+Express projektu? Momentálně vyhazuje chybu Error: Cannot find module


Mám modul TypeScript @tlabs/models, kde v souboru index.ts jednoduše exportuji:

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

kde v každém souboru mám něco jako:

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

a jedinou mojí závislostí je ts-mongoose, importovaná v každém souboru jednoduše takto:

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

ts-mongoose je závislost, která sama vyžadovala mongoose + mongoose typy.

V mém projektu typu TypeScript pro Node mám jako závislosti ts-mongoose, mongoose a @tlabs/models a @types/mongoose jako vývojovou závislost.

Spuštění tsc je v pořádku, soubory se zkompilují a žádná chyba není vyhozena, ale při pokusu o spuštění samotných souborů se objeví:

Error: Cannot find module '@tlabs/models'

Všechny moduly jsem přeinstaloval několikrát a zkontroloval jsem package.json stejně jako skutečné soubory na disku + přes VSCode a jsou tam přímo.

O co přicházím?

Můj tsconfig je:

{
  "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
  }
}

Jaký je správný způsob používání/importování toho v mém node projektu?

Odpověď č. 1

Moje konečná konfigurace TS:

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

a příslušná konfigurace souboru package.json:

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