我是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
我已经用光了我所有的Google技术-没运气了。
有人可以告诉我我在做什么错吗?
答案 0 :(得分:5)
替换:
import * as mongoose from "mongoose";
使用:
import mongoose from "mongoose";
答案 1 :(得分:1)
如果tsconfig.json中有"esModuleInterop": true,
,它将迫使您以不同的方式导入猫鼬,因此请更改上述选项或更改导入猫鼬的方式
答案 2 :(得分:1)
一个不错的方法是只导入你需要的方法,例如。
import { connect } from 'mongoose';
然后在你的班级
class App {
private async mongoSetup(): Promise<void> {
await connect(this.mongoUrl, {
useNewUrlParser: true,
useUnifiedTopology: true
});
}
}
答案 3 :(得分:0)
这对我有用:替换
import * as mongoose from "mongoose";
使用
import mongoose = require("mongoose");