mem0ai/mem0 · error · Error
The '${pkg}' package is required to use the ${label}. Instal
Error message
The '${pkg}' package is required to use the ${label}. Install it with: npm install ${pkg} What it means
loadPeer is a helper that dynamically imports optional peer dependencies (e.g. @azure/search-documents, mysql2, mochow-sdk); if the dynamic import fails it rethrows a friendly message naming the missing package and the npm install command. It exists because provider-specific SDKs are optional peers so that importing mem0ai/oss does not require every backend. The original error is swallowed, so only the package name is reported.
Source
Thrown at mem0-ts/src/oss/src/utils/load_peer.ts:9
export async function loadPeer(
pkg: string,
label: string,
load: () => Promise<any>,
): Promise<any> {
try {
return await load();
} catch {
throw new Error(
`The '${pkg}' package is required to use the ${label}. Install it with: npm install ${pkg}`,
);
}
}
View on GitHub (pinned to 001c235229)
Solutions
- Run the npm install command shown in the message (e.g. npm install mysql2).
- If already installed, reinstall node_modules (rm -rf node_modules && npm install) to fix a broken resolution.
- With pnpm/yarn workspaces, ensure the dependency is declared in the package that actually imports mem0ai, not only the root.
Example fix
# before npm install mem0ai # then use Azure MySQL store -> error # after npm install mem0ai mysql2
Defensive patterns
Strategy: try-catch
Validate before calling
async function peerAvailable(pkg: string): Promise<boolean> {
try { await import(pkg); return true; } catch { return false; }
} Try / catch
try {
await memory.add(msgs, { userId });
} catch (e) {
if (e instanceof Error && /package is required to use/.test(e.message)) {
// extract pkg name and surface 'run npm install <pkg>' to the operator
}
throw e;
} Prevention
- Declare the backend SDK (mysql2, @azure/search-documents, mochow-sdk, @azure/identity) in package.json alongside mem0ai from day one.
- Run a startup health check that dynamically imports each peer your config needs.
- In monorepos, install the peer in the consuming package, not just the root.
When it happens
Trigger: Configuring a vector store such as Azure AI Search or Azure MySQL without having installed its SDK (npm install @azure/search-documents / mysql2); using a bundler or pnpm strict node_modules layout that cannot resolve the peer; a corrupted node_modules causing the import to throw.
Common situations: Fresh install of mem0ai where optional peers are skipped; monorepo hoisting issues; CI image lacking optional deps; error message tells exactly which package to add.
Related errors
- The '@aws-sdk/client-bedrock-runtime' package is required to
- The '@databricks/sql' package is required to use the Databri
- HTTP ${resp.status}: ${detail}
- Either memoryId or --all is required
- At least one entity ID is required for deleteEntities.
AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15).
Data as JSON: /api/errors/1f90df8acebd3da0.
Report an issue: GitHub.