首页 > 解决方案 > '{ useNewUrlParser: boolean; 类型的参数 useUnifiedTopology: boolean}' 不可分配给参数类型'

问题描述

我正在尝试将我的 Node.js 服务器连接到 Atlas mongo 数据库。我为此使用猫鼬。

await mongoose
      .connect(process.env.MONGO_URI!, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
        useFindAndModify: false,
        poolSize: parseInt(process.env.POOL_SIZE!),
      })
      .then((res) => {
        console.log(
          'Connected to Distribution API Database - Initial Connection'
        );
      })
      .catch((err) => {
        console.log(
          `Initial Distribution API Database connection error occured -`,
          err
        );
      });

我在 package.json 文件中与此相关的依赖项如下

"dependencies": {
    "@types/mongoose": "5.7.29",
    "mongoose": "5.9.21",
    "typescript": "3.9.5"
  },

这在早期工作时没有任何问题(我根本没有更新 @types/mongoose 或 mongoose 版本),现在突然出现以下错误

Compilation error in /app/src/index.ts
Using ts-node version 8.10.2, typescript version 3.9.5
[ERROR] 16:25:18 ⨯ Unable to compile TypeScript: src/index.ts(59,11): error TS2769: No overload matches this call.
  Overload 1 of 3, '(uris: string, callback: (err: MongoError) => void): Promise<typeof import("mongoose")>', gave the following error.
    Argument of type '{ useNewUrlParser: boolean; useUnifiedTopology: boolean; useCreateIndex: boolean; useFindAndModify: boolean; poolSize: number; }' is not assignable to parameter of type '(err: MongoError) => void'.
      Object literal may only specify known properties, and 'useNewUrlParser' does not exist in type '(err: MongoError) => void'.
  Overload 2 of 3, '(uris: string, options?: ConnectionOptions | undefined): Promise<typeof import("mongoose")>', gave the following error.
    Argument of type '{ useNewUrlParser: true; useUnifiedTopology: true; useCreateIndex: true; useFindAndModify: false; poolSize: number; }' is not assignable to parameter of type 'ConnectionOptions'.
      Object literal may only specify known properties, and 'poolSize' does not exist in type 'ConnectionOptions'

有人可以帮我吗?非常感谢对此的任何想法。

谢谢

标签: typescriptmongodbmongoose

解决方案


npm 包“@types/mongoose”已被弃用,因为最新版本的 Mongoose 发布了自己的类型。

https://www.npmjs.com/package/@types/mongoose

因此,最新版本的 mongoose (6.0.3) 不提供 useNewUrlParser、useCreateIndex、useUnifiedTopology 和 useFindAndModify 的连接选项。

要解决这个问题,请将 mongoose 降级到旧版本,如5.13.8,然后它应该可以正常工作而没有任何问题。:)


推荐阅读