-
-
Notifications
You must be signed in to change notification settings - Fork 188
Open
Description
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