Skip to content

fix(loader): restore legacy slash-prefixed class resolution for container:graph#262

Merged
zazoomauro merged 2 commits into
masterfrom
copilot/fix-container-graph-legacy-module-resolution
Jun 23, 2026
Merged

fix(loader): restore legacy slash-prefixed class resolution for container:graph#262
zazoomauro merged 2 commits into
masterfrom
copilot/fix-container-graph-legacy-module-resolution

Conversation

Copilot AI commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Service configs using slash-prefixed class references (e.g. class: /Kernel) cause container:graph to throw Cannot find module '/Kernel' because /Kernel is treated as an absolute filesystem path rather than a relative module name.

Root cause

In FileLoader._requireClassNameFromPath, path.isAbsolute('/Kernel') returns true, so _getFromDirectoryByClassObject sets fromDirectory = '/'. This makes path.join('/', '/Kernel') = '/Kernel', causing require('/Kernel') to fail as a bare absolute path with no corresponding file.

Changes

  • lib/Loader/FileLoader.js — Normalize single-segment slash-prefixed class names at the entry of _requireClassNameFromPath before resolution:

    // '/Kernel' → 'Kernel'; multi-segment absolute paths like '/home/user/Kernel.js' are untouched
    const normalizedClass = (classObject && classObject.startsWith('/') && classObject.lastIndexOf('/') === 0)
      ? classObject.slice(1)
      : classObject

    After normalization Kernel resolves correctly relative to the config file's directory. Real absolute paths (multiple segments) are unaffected.

  • test/Resources/config/slash-prefixed-class.yml + test/Resources/config/Kernel.js — Test fixtures for the legacy pattern.

  • test/node-dependency-injection/lib/Loader/YamlFileLoader.spec.js — Regression test: load, compile, and resolve a service defined with class: /Kernel.

Copilot AI changed the title [WIP] Fix container:graph to restore legacy /ClassName module resolution fix(loader): restore legacy slash-prefixed class resolution for container:graph Jun 22, 2026
Copilot AI requested a review from zazoomauro June 22, 2026 18:07
@zazoomauro zazoomauro marked this pull request as ready for review June 23, 2026 08:55
@zazoomauro zazoomauro merged commit 08f9bff into master Jun 23, 2026
12 checks passed
@zazoomauro zazoomauro deleted the copilot/fix-container-graph-legacy-module-resolution branch June 23, 2026 08:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(container:graph): restore legacy /ClassName module resolution and avoid require('/Kernel')

2 participants