Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么我会得到;mongoose.connect不是一个函数;当你试图和猫鼬联系的时候?_Node.js_Mongodb_Typescript_Express_Mongoose - Fatal编程技术网

Node.js 为什么我会得到;mongoose.connect不是一个函数;当你试图和猫鼬联系的时候?

Node.js 为什么我会得到;mongoose.connect不是一个函数;当你试图和猫鼬联系的时候?,node.js,mongodb,typescript,express,mongoose,Node.js,Mongodb,Typescript,Express,Mongoose,我是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

我是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;
但是,当我尝试编译我的应用程序时,我得到:

TypeError: mongoose.connect is not a function
我已经用尽了我所有的谷歌技能——运气不好


有人能告诉我我做错了什么吗?

这对我很有效:替换

import * as mongoose from "mongoose";

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

import * as mongoose from "mongoose";
与:


一个很好的方法是只导入你需要的方法

从“猫鼬”导入{connect};
那么在你们班上呢

class应用程序{
私有异步mongoSetup():承诺{
等待连接(this.mongoUrl{
useNewUrlParser:true,
useUnifiedTopology:正确
});
}
}

将以下内容放入mongoSetup函数中,让我知道您得到了什么`mongoose.connect(this.mongour,{useNewUrlParser:true,useUnifiedTopology:true})。然后(函数(data){console.log(“data=,data);})。catch(函数(err){console.log(err);})`在加载mongoose模块后立即记录mongoose。我刚刚复制了您的代码,并将第一行替换为“express”中的
import*as express而且很简单。@AlokDeshwal--感谢您的关注。我无法登录到控制台,因为代码无法编译。另外,我用您的导入语句替换了我的导入语句,得到了相同的结果。没有改变任何东西。我做了你的改变,做了一个
tsc./lib/server.js
编译。然后它跑了。谢谢你的帮助。
import * as mongoose from "mongoose";
import mongoose from "mongoose";