Mongo Memory Server 根本没有启动

Sky*_*ndt 3 javascript mongoose mongodb node.js

编辑(自从我问这个问题以来已经有一整天了,但我仍然没有找到答案)

编辑(这个 mongodb 内存服务器在我的 ubuntu 笔记本电脑上运行良好)

我正在尝试运行 mongo 内存服务器,但出现错误,这是代码

const { MongoMemoryServer } = require("mongodb-memory-server");
const mongoose = require("mongoose");

(async () => {
  const mongod = new MongoMemoryServer();
  const mongoUri = await mongod.getUri();

  await mongoose.connect(mongoUri, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  });
})();
Run Code Online (Sandbox Code Playgroud)

这是在我的文件上运行的错误node --trace-warnings(我还为 mongo 内存服务器打开了 debig)

  MongoMS:MongoMemoryServer Called MongoMemoryServer.ensureInstance() method +0ms
  MongoMS:MongoMemoryServer  - no running instance, call `start()` command +1ms
  MongoMS:MongoMemoryServer Called MongoMemoryServer.start() method +0ms
  MongoMS:MongoMemoryServer starting with port 57263, since undefined was locked: 57263 +6ms
  MongoMS:MongoMemoryServer Starting MongoDB instance with following options: {"port":57263,"dbName":"cf1c3af6-a5d2-4336-b79b-a96fda68286d","ip":"127.0.0.1","storageEngine":"ephemeralForTest","dbPath":"C:\\Users\\skyle\\AppData\\Local\\Temp\\mongo-mem--10532-zQjLbcla6wmr","tmpDir":{"n,"storageEngine":"ephemeralForTest","dbPath":"C:\\Users\\skyle\\AppData\\Local\\Temp\\mongo-mem--10532-zQjLbcla6wmr","tmpDir":{"name":"C:\\Users\\skyle\\Appl\\Temp\\m},"uri":"mongodb://127.0.0.1:Data\\Local\\Temp\\mongo-mem--10532-zQjLbcla6wmr"},"uri":"mongodb://127.0.0.1:57263/cf1c3af6-a5d2-4336-b79b-a96fda68286d?"} +2ms
  MongoMS:MongoBinary MongoBinary options: {
  "downloadDir": "D:\\code\\thing\\node_modules\\.cache\\mongodb-memory-server\\mongodb-binaries",
  "platform": "win32",
  "arch": "x64",
  "version": "4.0.14",
  "checkMD5": false
} +0ms
  MongoMS:MongoBinary MongoBinary: Download lock removed +6ms
  MongoMS:MongoInstance Mongo[57263]: Called MongoInstance._launchKiller(parent: 10532, child: 5804): +0ms
  MongoMS:MongoInstance Mongo[57263]: Mongod instance closed with an non-0 code! +7ms
  MongoMS:MongoInstance Mongo[57263]: CLOSE: 3221225781 +0ms
  MongoMS:MongoInstance Mongo[57263]: MongodbInstance: Instance has failed: Mongod instance closed with code "3221225781" +1ms
(node:10532) UnhandledPromiseRejectionWarning: Mongod instance closed with code "3221225781"
    at emitUnhandledRejectionWarning (internal/process/promises.js:170:15)
    at processPromiseRejections (internal/process/promises.js:247:11)
    at processTicksAndRejections (internal/process/task_queues.js:96:32)
(node:10532) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a c                                       hich was not handled with .catch(). To terminate the node process on unhandled promise rejatch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `-atch block, or by rejecting a promise w-unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)                                        -rejection.org/api/cli.html#cli_unhandlxit code.
(node:10532) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.                                                                                                            e the Node.js process with a non-zero e
    at emitDeprecationWarning (internal/process/promises.js:180:11)
    at processPromiseRejections (internal/process/promises.js:249:13)
    at processTicksAndRejections (internal/process/task_queues.js:96:32)
  MongoMS:MongoInstance Mongo[57263]: [MongoKiller]: exit - [null,"SIGTERM"] +2ms
Run Code Online (Sandbox Code Playgroud)

我完全不知道发生了什么,并且已经被困了很长一段时间,任何帮助将不胜感激,

操作系统:Windows 10,节点版本:14.17.0,mongodb-memory-server版本:6.9.6,mongoose版本:5.12.11,

小智 15

我刚刚遇到了相同/类似的问题,结果是 mongodb-memory-server 版本已更新到 7.0.0,如更改日志中所述

MongoMemoryServer:删除选项“autoStart”更改“MongoMemoryServer.create”以始终调用“MongoMemoryServer.start” MongoMemoryServer:更改“MongoMemoryServer.getUri”以同步 MongoMemoryServer:删除已弃用的函数“getConnectionString”(替换为“getUri”)

autoStart已被删除,并且getUri不再是异步函数,因此您可以做的一件事是:

const { MongoMemoryServer } = require("mongodb-memory-server");
const mongoose = require("mongoose");

(async () => {
    const mongod = new MongoMemoryServer();
    await mongod.start();
    const mongoUri = mongod.getUri();
    
    await mongoose.connect(mongoUri, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
    });
})();
Run Code Online (Sandbox Code Playgroud)


小智 8

基于当前版本(8.0),您不应该显式实例化 MongoMemoryServer。下面的代码将创建“MongoMemoryServer”的新实例并自动启动它。

const { MongoMemoryServer } = require("mongodb-memory-server");
const mongoose = require("mongoose");

(async () => {
    mongoServer = await MongoMemoryServer.create();
    const mongoUri = mongoServer.getUri();
    
    await mongoose.connect(mongoUri, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
    });
})();
Run Code Online (Sandbox Code Playgroud)