Node.js 为什么我会得到;mongoose.connect不是一个函数;当你试图和猫鼬联系的时候?
我是Node.js新手,正在尝试使用TypeScript构建Node/express/mongoose服务器应用程序 这是我的app.ts文件: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
// 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";