From b5ba6558631b30f41fca42b7e3ee5f34221ad603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Mon, 23 Jun 2025 12:23:52 +0200 Subject: [PATCH] fix(core): Fix module path resolution for Docker (#16623) --- .../backend-common/src/modules/module-registry.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/@n8n/backend-common/src/modules/module-registry.ts b/packages/@n8n/backend-common/src/modules/module-registry.ts index bc94552e9b..8a06c50319 100644 --- a/packages/@n8n/backend-common/src/modules/module-registry.ts +++ b/packages/@n8n/backend-common/src/modules/module-registry.ts @@ -49,8 +49,21 @@ export class ModuleRegistry { */ async loadModules(modules?: ModuleName[]) { const moduleDir = process.env.NODE_ENV === 'test' ? 'src' : 'dist'; - const modulesDir = path.resolve(__dirname, `../../../../cli/${moduleDir}/modules`); + let modulesDir: string; + if (process.env.NODE_ENV === 'test') { + modulesDir = path.resolve(__dirname, `../../../../cli/${moduleDir}/modules`); + } else { + try { + // For Docker + const n8nPackagePath = require.resolve('n8n/package.json'); + const n8nRoot = path.dirname(n8nPackagePath); + modulesDir = path.join(n8nRoot, moduleDir, 'modules'); + } catch { + // Fallback to relative path for development + modulesDir = path.resolve(__dirname, `../../../../cli/${moduleDir}/modules`); + } + } for (const moduleName of modules ?? this.eligibleModules) { try { await import(`${modulesDir}/${moduleName}/${moduleName}.module`);