DefinitelyTyped Typescript 定义无法识别 mongoose 依赖项

DefinitelyTyped Typescript Definition doesn't recognize mongoose dependencies

我正在使用 TypeScript、Angular 2 和猫鼬。我使用 NPM 安装了猫鼬:

"dependencies": {
    "@angular/common": "2.0.0-rc.6",
    "@angular/compiler": "2.0.0-rc.6",
    "@angular/core": "2.0.0-rc.6",
    "@angular/forms": "2.0.0-rc.6",
    "@angular/http": "2.0.0-rc.6",
    "@angular/platform-browser": "2.0.0-rc.6",
    "@angular/platform-browser-dynamic": "2.0.0-rc.6",
    "@angular/router": "3.0.0-rc.2",
    "@angular/upgrade": "2.0.0-rc.6",
    "body-parser": "^1.15.2",
    "bootstrap": "^3.3.6",
    "core-js": "^2.4.1",
    "express": "^4.13.4",
    "jquery": "^3.1.0",
    "mongoose": "^4.6.0",
    "morgan": "^1.7.0",
    "path": "^0.12.7",
    "reflect-metadata": "^0.1.3",
    "rxjs": "5.0.0-beta.11",
    "systemjs": "0.19.27",
    "typescript": "^2.0.0",
    "typings": "^1.3.2",
    "zone.js": "^0.6.17"
  },
  "devDependencies": {
    "jasmine-core": "^2.5.1",
    "karma": "^1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-firefox-launcher": "^1.0.0",
    "karma-jasmine": "^1.0.2"
  }

当然,mongoose 安装 mongodb 作为依赖项。然后我使用安装猫鼬索引文件的命令 typipngs install dt~mongoose --global --save. 安装了猫鼬 DefintielyTyped 定义:

// Generated by typings
// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/51c51f03549a63f8791865bf26480947e22f4902/mongoose/mongoose.d.ts
declare module "mongoose" {
  import events = require('events');
  import mongodb = require('mongodb');
  import stream = require('stream');
  import mongoose = require('mongoose');

等等,等等。当我运行 tsc时,我得到以下错误:typings/globals/mongoose/index.d.ts(5,28): error TS2307: Cannot find module 'mongodb'npm install mongodb --save 感觉不对,因为它已经安装了 mongoose。

解决这个问题的正确方法是什么?

它不是要求您安装模块,而是要求您安装 mongodb 的类型。默认情况下,类型不安装依赖类型。所以你必须手动完成并安装每个依赖项。

特别是对于 Mongoose,您将需要 mongodbmpromisemongoose-promise 的类型(我认为这是所有类型)。