首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB -内存服务器没有在lerna引导程序上下载MongoDB

MongoDB -内存服务器没有在lerna引导程序上下载MongoDB
EN

Stack Overflow用户
提问于 2022-07-05 14:17:38
回答 1查看 241关注 0票数 0

我有一个Lerna,其中一个包中的一些集成测试使用mongodb-memory-server

问题是,当我从根运行所有测试时,mongodb-memory-server开始下载MongoDB并使用它进行测试,当然是超时。然后,在完全下载MongoDB之前,整个测试过程通过超时结束,所以下次它将再次开始下载。

以下几点:

  1. 我知道MongoDB是由mongodb-memory-server在dep安装时下载的。也就是说,在我的例子中,当我运行lerna bootstrap时。我不使用mongodb-memory-server-core,而是直接使用mongodb-memory-server。考虑到我在根node_modules中看到了node_modules缓存,这个缓存应该会像预期的那样工作。
  2. 考虑到第一点,我怀疑当测试被执行时,他们会在包node_modules而不是根中搜索那个缓存。为什么会这样呢?根据这句话,我理解它应该在根node_modules中搜索它。

这里我的全局测试设置,简化了

代码语言:javascript
复制
const mongod = new MongoMemoryServer()

beforeAll(async done => {
    const uri = await mongod.getUri()

    await mongoose.connect(uri, {
// ... some opts
    })
    done()
})

afterAll(async done => {
    await mongoose.connection.dropDatabase()
    await mongoose.connection.close()
    await mongod.stop()
    done()
})

这是我的lerna配置,简化了

代码语言:javascript
复制
{
    "packages": ["packages/*"],
    "command": {
        "bootstrap": {
            "hoist": true,
            "strict": true
        }
    },
    "version": "independent"
}

我理解得对吗?或者说,这里的整个流程应该是什么?

如果你需要更多的信息,就告诉我。

编辑:最好表达我的怀疑和重新措辞的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-06 07:56:18

我确认流程就是所描述的。这里缺少的部分是mongodb-memory-server env变量在jest.config.js文件中的用法。

代码语言:javascript
复制
process.env = Object.assign(process.env, {
    MONGOMS_SYSTEM_BINARY: path.join(
        '..',
        '..',
        'node_modules',
        '.cache',
        'mongodb-memory-server',
        'mongodb-binaries',
        '*', // MongoDB version is expanded
        'mongod.exe',
    ),
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72870969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档