Skip to content

Error on Amazon Linux 2023 CI Runner: TypeError: Cannot read properties of undefined (reading 'toString') #953

@akash931127

Description

@akash931127

Versions

  • NodeJS: 22.11.0
  • mongodb-memory-server: 10.1.4
  • mongodb(the binary version): 8.2.1
  • mongodb(the js package): 0.0.0
  • mongoose: 6.11.6
  • system: Amazon Linux 2023 x64
  • Detailed system breakdown
OS: Linux
Arch: X64
Amazon Linux release 2023.9.20251027 (Amazon Linux)
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.9.20251027"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2029-06-30"
Amazon Linux release 2023.9.20251027 (Amazon Linux)
x86_64 x86_64 x86_64 GNU/Linux

package: mongo-memory-server

What is the Problem?

The Mongo Memory Server fails to start with the following error:

TypeError: Cannot read properties of undefined (reading 'toString')

      11 |   if (!db) {
      12 |     console.log(`Creating MongoDB memory server for tests at ${currentDirectory}/testdb`);
    > 13 |     db = await MongoMemoryServer.create({
         |          ^
      14 |       instance: {
      15 |         dbPath: `${currentDirectory}/testdb`,
      16 |       },

      at Function.checkLock (node_modules/mongodb-memory-server-core/lib/util/lockfile.js:83:67)
      at LockFile.unlock (node_modules/mongodb-memory-server-core/lib/util/lockfile.js:202:17)
      at Function.download (node_modules/mongodb-memory-server-core/lib/util/MongoBinary.js:49:13)
      at Function.getPath (node_modules/mongodb-memory-server-core/lib/util/MongoBinary.js:105:30)
      at MongoInstance.start (node_modules/mongodb-memory-server-core/lib/util/MongoInstance.js:136:26)
      at Function.create (node_modules/mongodb-memory-server-core/lib/util/MongoInstance.js:85:9)
      at MongoMemoryServer._startUpInstance (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:226:26)
      at MongoMemoryServer.start (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:85:9)
      at Function.create (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:64:9)
      at Object.<anonymous>.module.exports.connect (test/mock/db.js:13:10)

This works fine locally on my Mac OS M3 Chip. However, it fails on CI. I am running my tests directly on the runner, so no docker containers involved

Code Example

if (!db) {
  db = await MongoMemoryServer.create({
    binary: {
      version: '8.0.0',
    },
  });
}

await mongoose.connect(db.getUri(), {
  dbName: 'testdb',
});

Debug Output

Debug Output
2025-11-13T02:07:11.042Z MongoMS:ResolveConfig Debug Mode Enabled, through package.json
2025-11-13T02:07:11.164Z MongoMS:MongoMemoryServer create: Called .create() method
2025-11-13T02:07:11.164Z MongoMS:MongoMemoryServer Mongo[unknown]: start: Called .start() method
2025-11-13T02:07:11.164Z MongoMS:MongoMemoryServer Mongo[unknown]: _startUpInstance: Called MongoMemoryServer._startUpInstance() method
2025-11-13T02:07:11.164Z MongoMS:MongoMemoryServer Mongo[unknown]: getStartOptions: forceSamePort: false
2025-11-13T02:07:11.165Z MongoMS:DryMongoBinary generateOptions
2025-11-13T02:07:11.165Z MongoMS:utils tryReleaseFile: "/etc/upstream-release/lsb-release" does not exist
2025-11-13T02:07:11.165Z MongoMS:utils tryReleaseFile: "/etc/os-release" does not exist
2025-11-13T02:07:11.165Z MongoMS:utils tryReleaseFile: "/usr/lib/os-release" does not exist
2025-11-13T02:07:11.165Z MongoMS:utils tryReleaseFile: "/etc/lsb-release" does not exist
2025-11-13T02:07:11.166Z MongoMS:DryMongoBinary generateDownloadPath: Generating Download Path, preferGlobal: "true"
2025-11-13T02:07:11.166Z MongoMS:DryMongoBinary generatePaths {
  version: '8.0.0',
  downloadDir: '',
  os: { os: 'linux', dist: 'unknown', release: '' },
  platform: 'linux',
  arch: 'x64',
  systemBinary: ''
}
2025-11-13T02:07:11.167Z MongoMS:DryMongoBinary getBinaryName
2025-11-13T02:07:11.168Z MongoMS:DryMongoBinary combineBinaryName
2025-11-13T02:07:11.168Z MongoMS:DryMongoBinary combineBinaryName
2025-11-13T02:07:11.168Z MongoMS:DryMongoBinary combineBinaryName
2025-11-13T02:07:11.168Z MongoMS:DryMongoBinary generateDownloadPath: Paths: {
  homeCache: '/home/ec2-user/.cache/mongodb-binaries/mongod-x64-unknown-8.0.0',
  modulesCache: '/opt/actions-runner/_work/monorepo/node_modules/.cache/mongodb-memory-server/mongod-x64-unknown-8.0.0',
  relative: '/opt/actions-runner/_work/monorepo/mongodb-binaries/mongod-x64-unknown-8.0.0',
  resolveConfig: ''
} 
2025-11-13T02:07:11.194Z MongoMS:DryMongoBinary generateDownloadPath: no existing binary for version "8.0.0" was found
2025-11-13T02:07:11.194Z MongoMS:DryMongoBinary generateDownloadPath: using global (preferGlobal) "/home/ec2-user/.cache/mongodb-binaries/mongod-x64-unknown-8.0.0"
2025-11-13T02:07:11.203Z MongoMS:GetPort getFreePort: found free port 46203, in cache and not custom: false
2025-11-13T02:07:11.204Z MongoMS:MongoMemoryServer Mongo[unknown]: getStartOptions: Checking if "/opt/actions-runner/_work/monorepo/testdb}" (no new tmpDir) already has data
2025-11-13T02:07:11.209Z MongoMS:MongoMemoryServer Mongo[unknown]: _startUpInstance: Creating new MongoDB instance with options: {
  instance: {
    port: 46203,
    dbName: '',
    ip: '127.0.0.1',
    storageEngine: 'wiredTiger',
    replSet: undefined,
    dbPath: '/opt/actions-runner/_work/monorepo/testdb',
    tmpDir: undefined,
    keyfileLocation: undefined,
    launchTimeout: undefined,
    args: undefined,
    auth: false
  },
  binary: { version: '8.0.0' },
  spawn: undefined
}
2025-11-13T02:07:11.209Z MongoMS:MongoInstance create: Called .create() method
2025-11-13T02:07:11.210Z MongoMS:MongoInstance Mongo[46203]: start
2025-11-13T02:07:11.210Z MongoMS:MongoBinary getPath
2025-11-13T02:07:11.210Z MongoMS:DryMongoBinary generateOptions
2025-11-13T02:07:11.210Z MongoMS:DryMongoBinary generateDownloadPath: Generating Download Path, preferGlobal: "true"
2025-11-13T02:07:11.211Z MongoMS:DryMongoBinary generatePaths {
  version: '8.0.0',
  downloadDir: '',
  os: { os: 'linux', dist: 'unknown', release: '' },
  platform: 'linux',
  arch: 'x64',
  systemBinary: ''
}
2025-11-13T02:07:11.211Z MongoMS:DryMongoBinary getBinaryName
2025-11-13T02:07:11.211Z MongoMS:DryMongoBinary combineBinaryName
2025-11-13T02:07:11.211Z MongoMS:DryMongoBinary combineBinaryName
2025-11-13T02:07:11.212Z MongoMS:DryMongoBinary combineBinaryName
2025-11-13T02:07:11.212Z MongoMS:DryMongoBinary generateDownloadPath: Paths: {
  homeCache: '/home/ec2-user/.cache/mongodb-binaries/mongod-x64-unknown-8.0.0',
  modulesCache: '/opt/actions-runner/_work/monorepo/node_modules/.cache/mongodb-memory-server/mongod-x64-unknown-8.0.0',
  relative: '/opt/actions-runner/_work/monorepo/mongodb-binaries/mongod-x64-unknown-8.0.0',
  resolveConfig: ''
} 
2025-11-13T02:07:11.217Z MongoMS:DryMongoBinary generateDownloadPath: no existing binary for version "8.0.0" was found
2025-11-13T02:07:11.217Z MongoMS:DryMongoBinary generateDownloadPath: using global (preferGlobal) "/home/ec2-user/.cache/mongodb-binaries/mongod-x64-unknown-8.0.0"
2025-11-13T02:07:11.217Z MongoMS:MongoBinary getPath: MongoBinary options: {
  "version": "8.0.0",
  "downloadDir": "/home/ec2-user/.cache/mongodb-binaries",
  "os": {
    "os": "linux",
    "dist": "unknown",
    "release": ""
  },
  "platform": "linux",
  "arch": "x64",
  "systemBinary": "",
  "checkMD5": true
}

Do you know why it happenes?

I think its because mongo-memory-server is unable to determine exactly which binary to download. I figured this out by looking at the debug logs and the warning emitted that I have pasted below.

You can see the warning states to reach out and raise an issue. Also the debug logs says its trying to find a binary for mongodb-x64-unknown which helped me a lot to mitigate the issue

console.log
      Creating MongoDB memory server for tests at /opt/actions-runner/_work/monorepo/testdb

      at Object.<anonymous>.module.exports.connect (test/mock/db.js:12:13)

    console.warn
      Could not find any valid Release File, using fallback information

      11 |   if (!db) {
      12 |     console.log(`Creating MongoDB memory server for tests at ${currentDirectory}/testdb`);
    > 13 |     db = await MongoMemoryServer.create({
         |          ^
      14 |       instance: {
      15 |         dbPath: `${currentDirectory}/testdb`,
      16 |       },

      at getLinuxInformation (node_modules/mongodb-memory-server-core/lib/util/getos/index.js:80:13)
      at getOS (node_modules/mongodb-memory-server-core/lib/util/getos/index.js:44:24)
      at Function.generateOptions (node_modules/mongodb-memory-server-core/lib/util/DryMongoBinary.js:77:36)
      at MongoMemoryServer.getStartOptions (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:143:22)
      at MongoMemoryServer._startUpInstance (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:224:53)
      at MongoMemoryServer.start (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:85:9)
      at Function.create (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:64:9)
      at Object.<anonymous>.module.exports.connect (test/mock/db.js:13:10)

    console.warn
      Couldnt parse dist information, please report this to https://github.com/typegoose/mongodb-memory-server/issues

      11 |   if (!db) {
      12 |     console.log(`Creating MongoDB memory server for tests at ${currentDirectory}/testdb`);
    > 13 |     db = await MongoMemoryServer.create({
         |          ^
      14 |       instance: {
      15 |         dbPath: `${currentDirectory}/testdb`,
      16 |       },

      at MongoBinaryDownloadUrl.getLinuxOSVersionString (node_modules/mongodb-memory-server-core/lib/util/MongoBinaryDownloadUrl.js:208:21)
      at MongoBinaryDownloadUrl.getArchiveNameLinux (node_modules/mongodb-memory-server-core/lib/util/MongoBinaryDownloadUrl.js:128:31)
      at MongoBinaryDownloadUrl.getArchiveName (node_modules/mongodb-memory-server-core/lib/util/MongoBinaryDownloadUrl.js:65:29)
      at MongoBinaryDownloadUrl.getDownloadUrl (node_modules/mongodb-memory-server-core/lib/util/MongoBinaryDownloadUrl.js:36:36)
      at MongoBinaryDownload.startDownload (node_modules/mongodb-memory-server-core/lib/util/MongoBinaryDownload.js:90:42)
      at MongoBinaryDownload.getMongodPath (node_modules/mongodb-memory-server-core/lib/util/MongoBinaryDownload.js:66:32)
      at Function.download (node_modules/mongodb-memory-server-core/lib/util/MongoBinary.js:43:74)
      at Function.getPath (node_modules/mongodb-memory-server-core/lib/util/MongoBinary.js:105:30)
      at MongoInstance.start (node_modules/mongodb-memory-server-core/lib/util/MongoInstance.js:136:26)
      at Function.create (node_modules/mongodb-memory-server-core/lib/util/MongoInstance.js:85:9)
      at MongoMemoryServer._startUpInstance (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:226:26)
      at MongoMemoryServer.start (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:85:9)
      at Function.create (node_modules/mongodb-memory-server-core/lib/MongoMemoryServer.js:64:9)
      at Object.<anonymous>.module.exports.connect (test/mock/db.js:13:10)

Then I enabled the debug logs

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions