为什么我在尝试与 mongoose 连接时收到“mongoose.connect is not a function”?

Nic*_*ges 17 mongoose mongodb node.js express typescript

我是 Node.js 的新手,正在尝试使用 TypeScript 构建一个 node/express/mongoose 服务器应用程序。

这是我的 app.ts 文件:

// lib/app.ts
import express from 'express';
import * as bodyParser from 'body-parser';
import { Routes } from './routes/crmRoutes';
import * as mongoose from "mongoose";

class App {
  public app: express.Application;
  public routePrv: Routes = new Routes();
  public mongoUrl: string = 'mongodb://localhost/TodosDB';

  constructor() {
    this.app = express();
    this.config();
    this.routePrv.routes(this.app);
    this.mongoSetup();
  }

  private mongoSetup(): void {
    mongoose.connect(this.mongoUrl, {
      useNewUrlParser: true,
      useUnifiedTopology: true
    });
  }

  private config(): void {
    // support application/json type post data
    this.app.use(bodyParser.json());
    //support application/x-www-form-urlencoded post data
    this.app.use(bodyParser.urlencoded({ extended: false }));
  }
}

export default new App().app;
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译我的应用程序时,我得到:

TypeError: mongoose.connect is not a function
Run Code Online (Sandbox Code Playgroud)

我已经用完了我所有的谷歌技能——不走运。

谁能告诉我我做错了什么?

小智 19

代替:

import * as mongoose from "mongoose";
Run Code Online (Sandbox Code Playgroud)

和:

import mongoose from "mongoose";
Run Code Online (Sandbox Code Playgroud)

  • /sf/answers/3944370251/ - 解释 (2认同)

sff*_*ffc 17

这对我有用:替换

import * as mongoose from "mongoose";
Run Code Online (Sandbox Code Playgroud)

import mongoose = require("mongoose");
Run Code Online (Sandbox Code Playgroud)


jav*_*bat 5

如果您"esModuleInterop": true,在 tsconfig.json 中,它会强制您以不同方式导入 mongoose,因此请更改上述选项或更改导入 mongoose 的方式