使用useNewUrlParser和TypeScript中的猫鼬键入错误

时间:2019-05-25 16:00:23

标签: typescript mongoose webstorm tslint

我正在执行以下操作:

// Connect to MongoDB
mongoose.connect(MONGODB_URI, { useNewUrlParser: true, useCreateIndex: true }).then(
  () => { /** ready to use. The `mongoose.connect()` promise resolves to undefined. */ },
).catch((err: Error) => {
  console.log('MongoDB connection error. Please make sure MongoDB is running. ' + err)
  process.exit();
})

并且我从WebStorm TypeScript服务中收到以下错误(手动运行TSLint可以正常工作):

  

TS2345:类型为'{useNewUrlParser:boolean; useCreateIndex:   布尔值}'不可分配给'(err:MongoError)类型的参数   =>无效”。对象文字只能指定已知的属性,并且'useNewUrlParser'在'(err:MongoError)=> void'类型中不存在。

@types/mongoose似乎是一个问题,但我到处都看过,找不到它的来源。

这是一种变通方法,不能真正解释问题:

    mongoose.set('useNewUrlParser', true)
    mongoose.set('useCreateIndex', true)
    mongoose.connect(MONGODB_URI).then(...

2 个答案:

答案 0 :(得分:0)

您需要安装dev依赖项

npm install -D @types/mongoose --save

答案 1 :(得分:0)

不幸的是,即使安装了类型定义,Mongoose 库也会抛出错误:

yarn add @types/mongoose  or  npm i --save-dev @types/mongoose

补救措施之一是在 skipLibCheck: true 中添加选项 tsconfig.json

{
  "compilerOptions": {
    ...
    "skipLibCheck": true,
    ...
  },
  ...
}