节点错误:找不到模块 - 我导出猫鼬模式和接口的自定义模块的 typescript api

Posted

技术标签:

【中文标题】节点错误:找不到模块 - 我导出猫鼬模式和接口的自定义模块的 typescript api【英文标题】:Node Error: Cannot find module - typescript api for custom module where I export mongoose schemas and interfaces 【发布时间】:2019-11-08 12:47:40 【问题描述】:

我有一个打字稿模块@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 是一个依赖项,它本身需要 mongoose + mongoose 类型。

在我的 typescript 节点项目中,ts-mongoosemongoose 和 @tlabs/models 作为依赖项,@types/mongoose 作为开发依赖项。

运行 tsc 没问题,文件被编译,没有错误被抛出,但尝试运行实际文件却抛出:

Error: Cannot find module '@tlabs/models'

我已经多次重新安装了所有模块,并通过 vscode 检查了 package.json 以及磁盘上的实际文件,它们就在那里。

我错过了什么?

我的 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"
    ],

【讨论】:

以上是关于节点错误:找不到模块 - 我导出猫鼬模式和接口的自定义模块的 typescript api的主要内容,如果未能解决你的问题,请参考以下文章

节点模块导出,访问不存在的属性错误,Jasmine

如何修复“需要路径,验证错误”,猫鼬,节点

如何修复“需要路径,验证错误”,猫鼬,节点

节点 js 错误:找不到模块 './lib/socket.io'

ES6:模块“猫鼬”没有默认导出

由于以下错误,无法运行任何 npm 命令 - 错误:找不到模块“semver”