【发布时间】:2018-06-28 00:14:01
【问题描述】:
我有一个内置在 typescript 中的 node/express/mongoose 应用程序。但是我遇到了猫鼬的问题。
我在使用猫鼬时收到以下错误TS2531: Object is possibly 'null'. 错误。
app.ts
import express from 'express';
import logger from 'morgan';
import mongoose from 'mongoose';
import passport from 'passport';
import cors from "cors";
import Routes from './routes';
import Config from './config/config';
class App {
public app: express.Application;
public config: any;
constructor() {
this.app = express();
this.environment();
this.database();
this.middleware();
this.routes();
}
private environment(): void {
this.config = new Config();
}
private database(): void {
const uri: string = this.config.db.uri;
const options: any = this.config.db.options;
mongoose.connect(uri, options).then(
() => {
console.log("MongoDB Successfully Connected On: " + this.config.db.uri)
},
(err: any) => {
console.error("MongoDB Error:", err);
console.log('%s MongoDB connection error. Please make sure MongoDB is running.');
process.exit();
}
);
}
private middleware(): void {
this.app.use(cors());
this.app.use(logger('dev'));
this.app.use(express.json());
this.app.use(express.urlencoded({ extended: true }));
this.app.use(passport.initialize());
}
private routes(): void {
const routes = new Routes(this.app);
}
}
export default App;
我该如何正确处理?
编辑
发布整个应用程序文件以提供更多上下文。错误特别指出以下行mongoose.connect(uri, options)
src/app.ts:39:13 - 错误 TS2531:对象可能为“空”。
39 mongoose.connect(uri, options).then( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【问题讨论】:
-
你在哪一行得到错误?
-
首先突出显示所有这些
mongoose.connect(uri, options) -
任何想法@titian-cernicova-dragomir
-
没有足够的信息来表达想法,有些东西可能是空的,编译器告诉你在使用它之前检查它。但是如果没有重现错误的最小示例,或者没有更完整的定义,就很难说
-
我已经用完整的代码更新了我的问题,如果你能看一下,我将不胜感激。 @titian-cernicova-dragomir
标签: node.js typescript mongoose