Skip to content

fix: parse # in absolute path directory names as part of the path#20980

Merged
alexander-akait merged 6 commits into
mainfrom
claude/fix-issue-16819-x9nMl
May 19, 2026
Merged

fix: parse # in absolute path directory names as part of the path#20980
alexander-akait merged 6 commits into
mainfrom
claude/fix-issue-16819-x9nMl

Conversation

@alexander-akait

@alexander-akait alexander-akait commented May 18, 2026

Copy link
Copy Markdown
Member

When an absolute path contains # followed by a path separator (e.g.
/home/user/proj#1/file.js), treat the # as part of the directory
name rather than a fragment marker. A real fragment cannot have a path
separator after it before any query, so this disambiguation is sound
and preserves existing fragment behavior for paths like
/abs/path/file.js#fragment.

fixes #16819
fixes #20877

When an absolute path contains `#` followed by a path separator (e.g.
`/home/user/proj#1/file.js`), treat the `#` as part of the directory
name rather than a fragment marker. A real fragment cannot have a path
separator after it before any query, so this disambiguation is sound
and preserves existing fragment behavior for paths like
`/abs/path/file.js#fragment`.

Fixes #16819
Adds a unit test using the precise absolute path + query string that
webpack-dev-server generates when serving a project located in a
directory containing `#`, demonstrating that `_parseResource` now
correctly splits path from query for this real-world case.
)

When a project lives in a directory containing `#` (e.g. `~/proj#1/`)
and a tool like webpack-dev-server passes an absolute entry path with
a query string (e.g. `/abs/proj#1/file.js?protocol=ws`), the resolver
mis-split the path at the first `#`, leading to "Module not found".

Pre-escape `#` characters in the directory portion of absolute path
requests as `\0#` (the existing enhanced-resolve escape) before passing
to the resolver. A `#` after the last path separator is left alone so
explicit fragment requests like `/abs/path/file.js#fragment` still
behave the same.

Adds an integration test that compiles a project located in a directory
containing `#` with an absolute entry path + query (mirroring the
webpack-dev-server scenario), and unit coverage for the new escape
utility and the exact URL from the issue.
Relative requests with `#` in a directory name plus a query (e.g.
`./proj#1/file.js?q=1`) hit the same resolver failure as absolute ones.
Extend the pre-escape to cover both, but restrict it to requests that
contain `?` — without a query the resolver's own fallback handles
directory `#` correctly, and skipping it preserves legitimate fragment
semantics like `./resourceFragment/index#/some/fragment`.

Renames `escapeHashInAbsolutePath` to `escapeHashInPathRequest`, expands
unit coverage to relative and Windows forms, and adds a companion
configCases test using a relative entry from a `#` directory.
Copilot AI review requested due to automatic review settings May 18, 2026 19:32
@changeset-bot

changeset-bot Bot commented May 18, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 40aef01

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
webpack Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

github-actions Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

This PR is packaged and the instant preview is available (865c051).

Install it locally:

  • npm
npm i -D webpack@https://pkg.pr.new/webpack@865c051
  • yarn
yarn add -D webpack@https://pkg.pr.new/webpack@865c051
  • pnpm
pnpm add -D webpack@https://pkg.pr.new/webpack@865c051

@codecov

codecov Bot commented May 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.92%. Comparing base (d21b845) to head (40aef01).
⚠️ Report is 37 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #20980      +/-   ##
==========================================
- Coverage   91.38%   90.92%   -0.46%     
==========================================
  Files         568      573       +5     
  Lines       56486    58639    +2153     
  Branches    14999    15774     +775     
==========================================
+ Hits        51621    53320    +1699     
- Misses       4865     5319     +454     
Flag Coverage Δ
integration 89.61% <86.95%> (-0.72%) ⬇️
test262 45.37% <26.08%> (-0.23%) ⬇️
unit 36.59% <100.00%> (+0.55%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates module request handling so # characters in directory names are escaped before normal resource resolution, addressing failures when paths with # also include query strings.

Changes:

  • Adds escapeHashInPathRequest in lib/util/identifier.js.
  • Applies the escaping in NormalModuleFactory before resolving resources.
  • Adds unit/config tests and a patch changeset for issue #16819.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
lib/util/identifier.js Adds hash escaping helper for path-like requests with query strings.
lib/NormalModuleFactory.js Uses the new helper before resolving unresolved resources.
test/identifier.unittest.js Adds unit coverage for hash escaping behavior.
test/configCases/parsing/issue-16819-#-in-path-#/webpack.config.js Adds absolute-path regression config.
test/configCases/parsing/issue-16819-#-in-path-#/index.js Adds regression test entry.
test/configCases/parsing/issue-16819-relative-#/webpack.config.js Adds relative-path regression config.
test/configCases/parsing/issue-16819-relative-#/#dir/index.js Adds relative regression test entry.
.changeset/parse-resource-hash-in-absolute-path.md Adds patch release note.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lib/util/identifier.js
Comment on lines +518 to +524
const lastSep = Math.max(
request.lastIndexOf("/", queryStart - 1),
request.lastIndexOf("\\", queryStart - 1)
);
if (hashStart >= lastSep) return request;
const pathPart = request.slice(0, lastSep);
return pathPart.replace(HASH_REGEXP, "\0#") + request.slice(lastSep);

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The case you describe (#/some/fragment?query parsed as a fragment containing both / and ?) is structurally identical to the actual bug case in #16819: /home/user/proj#/webpack/.../index.js?protocol=ws.... Both are "a segment ending with #, followed by /...?query". Pure string analysis cannot distinguish "directory # + query" from "fragment containing / + ? inside the fragment" — both interpretations are valid URL syntax, webpack has historically supported both, and the parser has no filesystem context.

Given the ambiguity, we have to choose. This fix biases toward the directory interpretation because:

  • It is the case from webpack-dev-server fails if # in project path #16819, which has been open since 2023 and affects anyone whose project path contains # plus uses webpack-dev-server.
  • The fragment-with-/-and-? pattern is webpack-specific and rare. Existing tests using fragment semantics (e.g. ./resourceFragment/index#" + __dirname) don't include a query string, so none of them break.
  • The escape is gated on ? being present; requests without a query keep their existing semantics entirely, so the common fragment cases are untouched.
  • Users who genuinely want fragment-containing-/-and-? semantics can still write \0# explicitly to opt out.

The changeset is being updated separately to remove the parseResource mention (your other comment) — that wording was stale.


Generated by Claude Code

"webpack": patch
---

Treat `#` in an absolute path's directory name as part of the path rather than a fragment separator. `parseResource` and resolver requests now correctly handle absolute paths containing `#`, so projects in directories like `/home/user/proj#1` (and tools like webpack-dev-server that build absolute entry requests with query strings) resolve correctly.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 71f7156 — the changeset now describes the resolver-side escape only and no longer claims parseResource behavior changed.


Generated by Claude Code

@codspeed-hq

codspeed-hq Bot commented May 18, 2026

Copy link
Copy Markdown

Merging this PR will improve performance by 66.98%

⚡ 8 improved benchmarks
❌ 2 regressed benchmarks
✅ 134 untouched benchmarks
⏩ 72 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Memory benchmark "side-effects-reexport", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 407.4 KB 859.5 KB -52.6%
Memory benchmark "concatenate-modules", scenario '{"name":"mode-development","mode":"development"}' 1,114.5 KB 778 KB +43.26%
Memory benchmark "concatenate-modules", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 131 KB 489.1 KB -73.22%
Memory benchmark "asset-modules-resource", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 531.6 KB 210.4 KB ×2.5
Memory benchmark "context-esm", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 663.6 KB 145.4 KB ×4.6
Memory benchmark "asset-modules-source", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 3,717 KB 398.8 KB ×9.3
Memory benchmark "devtool-eval-source-map", scenario '{"name":"mode-production","mode":"production"}' 7.6 MB 6.3 MB +21.15%
Memory benchmark "cache-filesystem", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 841.9 KB 300.5 KB ×2.8
Memory benchmark "side-effects-reexport", scenario '{"name":"mode-development","mode":"development"}' 4.9 MB 4 MB +21.05%
Memory benchmark "many-chunks-commonjs", scenario '{"name":"mode-development-rebuild","mode":"development","watch":true}' 352.8 KB 168.1 KB ×2.1

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing claude/fix-issue-16819-x9nMl (40aef01) with main (561ee9b)

Open in CodSpeed

Footnotes

  1. 72 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

The changeset previously implied parseResource was modified; in fact the
exported parser is unchanged and the fix only pre-escapes `#` in path
requests before the resolver. Rewording per Copilot review feedback.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.

Comment thread lib/util/identifier.js
Comment on lines +520 to +524
request.lastIndexOf("\\", queryStart - 1)
);
if (hashStart >= lastSep) return request;
const pathPart = request.slice(0, lastSep);
return pathPart.replace(HASH_REGEXP, "\0#") + request.slice(lastSep);

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Fixed in 40aef01HASH_REGEXP is now /(?<!\0)#/g (negative lookbehind), so \0# sequences are skipped and the explicit opt-out remains stable. Added unit coverage for pre-escaped inputs, including mixed pre-escaped + raw # in the same request.


Generated by Claude Code

Comment on lines +119 to +123
// `#` in directory portion with query → escaped
["/home/user/proj#1/file.js?q=1", "/home/user/proj\0#1/file.js?q=1"],
["/home/user/a#b/c#d/file.js?q=1", "/home/user/a\0#b/c\0#d/file.js?q=1"],
["C:\\Users\\proj#1\\file.js?q=1", "C:\\Users\\proj\0#1\\file.js?q=1"],
["C:/Users/proj#1/file.js?q=1", "C:/Users/proj\0#1/file.js?q=1"],

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 40aef01 — added three pre-escaped cases to the escapeHashInPathRequest matrix: pure \0# preserved, mixed \0# + raw # (only the raw one gets escaped), and the same on a relative path.


Generated by Claude Code

Comment on lines +1 to +4
"use strict";

const path = require("path");

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 40aef01 — added the JSDoc type annotation to both new configCases configs.


Generated by Claude Code


// Companion to issue-16819-#-in-path-#: same project layout, but the entry is
// expressed as a relative request with a query string. Without escaping, the
// resolver mis-splits `#` in the directory portion and fails.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 40aef01 — see the matching fix in the absolute-path config case.


Generated by Claude Code

// Reproduces https://github.com/webpack/webpack/issues/16819: webpack-dev-server
// adds entries as absolute paths with query strings, and when the project lives
// in a directory containing `#` (e.g. `/home/user/proj#1/`), webpack incorrectly
// split the path at the first `#`, failing to resolve.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 40aef01.


Generated by Claude Code

- escapeHashInPathRequest now uses a negative-lookbehind regex so an
  already-escaped `\0#` is not re-escaped into `\0\0#`, keeping the
  explicit `\0#` opt-out stable. Adds unit coverage for pre-escaped
  inputs (mixed with raw `#` chars).
- Adds the `Configuration` JSDoc type annotation to both new
  configCases webpack.config.js files for consistency with the rest
  of the suite.
- Fixes a present/past tense comment ("split" -> "splits").

All addressing Copilot review feedback on #20980.
@github-actions

Copy link
Copy Markdown
Contributor

Types Coverage

Coverage after merging claude/fix-issue-16819-x9nMl into main will be
98.95%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
bin
   webpack.js98.77%100%100%98.77%91
examples
   build-common.js100%100%100%100%
   buildAll.js100%100%100%100%
   examples.js100%100%100%100%
   template-common.js98.21%100%100%98.21%72
examples/custom-javascript-parser
   test.filter.js100%100%100%100%
examples/custom-javascript-parser/internals
   acorn-parse.js100%100%100%100%
   meriyah-parse.js100%100%100%100%
   oxc-parse.js91.30%100%100%91.30%140, 142–143, 145, 147, 153–154, 161, 168, 90
examples/markdown
   webpack.config.mjs100%100%100%100%
examples/typescript
   test.filter.js100%100%100%100%
examples/typescript-non-erasable
   test.filter.js50%100%100%50%5
examples/virtual-modules
   test.filter.js100%100%100%100%
examples/wasm-bindgen-esm
   test.filter.js100%100%100%100%
examples/wasm-complex
   test.filter.js100%100%100%100%
examples/wasm-simple
   test.filter.js100%100%100%100%
examples/wasm-simple-source-phase
   test.filter.js100%100%100%100%
lib
   APIPlugin.js100%100%100%100%
   AsyncDependenciesBlock.js100%100%100%100%
   AutomaticPrefetchPlugin.js100%100%100%100%
   BannerPlugin.js100%100%100%100%
   Cache.js98.21%100%100%98.21%101
   CacheFacade.js100%100%100%100%
   Chunk.js99.72%100%100%99.72%37
   ChunkGraph.js100%100%100%100%
   ChunkGroup.js100%100%100%100%
   ChunkTemplate.js100%100%100%100%
   CleanPlugin.js98.72%100%100%98.72%206, 226, 382
   CodeGenerationResults.js100%100%100%100%
   CompatibilityPlugin.js100%100%100%100%
   Compilation.js98.55%100%100%98.55%1554, 1850, 1857, 1865, 1887, 2783, 3208, 3870, 3899, 3952–3953, 3957, 3962, 3978–3979, 3993–3994, 3999–4000, 4477, 4503, 493, 498, 5211, 5292, 5307, 5332–5333, 5335, 5659, 5664, 5670, 5673, 5685, 5687, 5691, 5707, 5722, 5754, 5808, 5832, 5946, 712–713
   Compiler.js99.55%100%100%99.55%1116–1117, 1125
   ConcatenationScope.js98.59%100%100%98.59%189
   ConditionalInitFragment.js100%100%100%100%
   ConstPlugin.js100%100%100%100%
   ContextExclusionPlugin.js100%100%100%100%
   ContextModule.js100%100%100%100%
   ContextModuleFactory.js97.75%100%100%97.75%258, 393, 418, 443, 447, 458
   ContextReplacementPlugin.js100%100%100%100%
   DefinePlugin.js98.92%100%100%98.92%158–159, 175, 194, 268
   DependenciesBlock.js100%100%100%100%
   Dependency.js98.20%100%100%98.20%379, 425
   DependencyTemplate.js100%100%100%100%
   DependencyTemplates.js100%100%100%100%
   DotenvPlugin.js97.88%100%100%97.88%237, 378, 391–392
   DynamicEntryPlugin.js100%100%100%100%
   EntryOptionPlugin.js100%100%100%100%
   EntryPlugin.js100%100%100%100%
   Entrypoint.js100%100%100%100%
   EnvironmentPlugin.js97.14%100%100%97.14%49
   ErrorHelpers.js100%100%100%100%
   EvalDevToolModulePlugin.js100%100%100%100%
   EvalSourceMapDevToolPlugin.js100%100%100%100%
   ExportsInfo.js100%100%100%100%
   ExportsInfoApiPlugin.js100%100%100%100%
   ExternalModule.js98.96%100%100%98.96%424–428, 576
   ExternalModuleFactoryPlugin.js100%100%100%100%
   ExternalsPlugin.js100%100%100%100%
   FileSystemInfo.js99.50%100%100%99.50%182, 2252–2253, 2256, 2267, 2278, 2289, 278, 3694, 3709, 3733
   FlagAllModulesAsUsedPlugin.js100%100%100%100%
   FlagDependencyExportsPlugin.js98.74%100%100%98.74%399, 401, 405
   FlagDependencyUsagePlugin.js100%100%100%100%
   FlagEntryExportAsUsedPlugin.js100%100%100%100%
   Generator.js100%100%100%100%
   HotModuleReplacementPlugin.js100%100%100%100%
   HotUpdateChunk.js100%100%100%100%
   IgnorePlugin.js100%100%100%100%
   IgnoreWarningsPlugin.js100%100%100%100%
   InitFragment.js100%100%100%100%
   JavascriptMetaInfoPlugin.js100%100%100%100%
   LibraryTemplatePlugin.js100%100%100%100%
   LoaderOptionsPlugin.js100%100%100%100%
   LoaderTargetPlugin.js100%100%100%100%
   MainTemplate.js100%100%100%100%
   ManifestPlugin.js100%100%100%100%
   Module.js98.50%100%100%98.50%1305, 1310, 1371, 1385, 1447, 1456
   ModuleFactory.js100%100%100%100%
   ModuleFilenameHelpers.js98.85%100%100%98.85%106, 108
   ModuleGraph.js99.73%100%100%99.73%1004
   ModuleGraphConnection.js100%100%100%100%
   ModuleInfoHeaderPlugin.js100%100%100%100%
   ModuleProfile.js100%100%100%100%
   ModuleSourceTypeConstants.js100%100%100%100%
   ModuleTemplate.js100%100%100%100%
   ModuleTypeConstants.js100%100%100%100%
   MultiCompiler.js99.69%100%100%99.69%645
   MultiStats.js100%100%100%100%
   MultiWatching.js100%100%100%100%
   NoEmitOnErrorsPlugin.js100%100%100%100%
   NodeStuffPlugin.js100%100%100%100%
   NormalModule.js97.78%100%100%97.78%1020, 1036, 1123, 1774, 1779–1789, 708, 711, 728, 745, 986
   NormalModuleFactory.js99.47%100%100%99.47%1075, 1384, 474, 486
   NormalModuleReplacementPlugin.js100%100%100%100%
   NullFactory.js100%100%100%100%
   OptimizationStages.js100%100%100%100%
   OptionsApply.js100%100%100%100%
   Parser.js100%100%100%100%
   PlatformPlugin.js100%100%100%100%
   PrefetchPlugin.js100%100%100%100%
   ProgressPlugin.js98.85%100%100%98.85%519–520, 525, 527, 591
   ProvidePlugin.js100%100%100%100%
   RawModule.js100%100%100%100%
   RecordIdsPlugin.js100%100%100%100%
   RequestShortener.js100%100%100%100%
   ResolverFactory.js100%100%100%100%
   RuntimeGlobals.js100%100%100%100%
   RuntimeModule.js100%100%100%100%
   RuntimePlugin.js100%100%100%100%
   RuntimeTemplate.js100%100%100%100%
   SelfModuleFactory.js100%100%100%100%
   SingleEntryPlugin.js100%100%100%100%
   SourceMapDevToolModuleOptionsPlugin.js100%100%100%100%
   SourceMapDevToolPlugin.js99.16%100%100%99.16%267–268, 610
   Stats.js100%100%100%100%
   Template.js100%100%100%100%
   TemplatedPathPlugin.js98.86%100%100%98.86%134–135
   UseStrictPlugin.js100%100%100%100%
   WarnCaseSensitiveModulesPlugin.js100%100%100%100%
   WarnDeprecatedOptionPlugin.js100%100%100%100%
   WarnNoModeSetPlugin.js100%100%100%100%
   WatchIgnorePlugin.js100%100%100%100%
   Watching.js100%100%100%100%
   WebpackError.js100%100%100%100%
   WebpackIsIncludedPlugin.js100%100%100%100%
   WebpackOptionsApply.js100%100%100%100%
   WebpackOptionsDefaulter.js100%100%100%100%
   buildChunkGraph.js99.87%100%100%99.87%325
   cli.js98.71%100%100%98.71%117, 469, 501, 543, 813
   index.js100%100%100%100%
   validateSchema.js94.67%100%100%94.67%100, 87, 89, 98
   webpack.js97.22%100%100%97.22%196, 218, 220
lib/asset
   AssetBytesGenerator.js100%100%100%100%
   AssetBytesParser.js100%100%100%100%
   AssetGenerator.js100%100%100%100%
   AssetModulesPlugin.js97.77%100%100%97.77%285, 309, 312, 364, 40
   AssetParser.js100%100%100%100%
   AssetSourceGenerator.js100%100%100%100%
   AssetSourceParser.js100%100%100%100%
   RawDataUrlModule.js100%100%100%100%
lib/async-modules
   AsyncModuleHelpers.js100%100%100%100%
   AwaitDependenciesInitFragment.js100%100%100%100%
   InferAsyncModulesPlugin.js100%100%100%100%
lib/cache
   AddBuildDependenciesPlugin.js100%100%100%100%
   AddManagedPathsPlugin.js100%100%100%100%
   IdleFileCachePlugin.js97.92%100%100%97.92%71, 83, 91
   MemoryCachePlugin.js95.83%100%100%95.83%33
   MemoryWithGcCachePlugin.js93.15%100%100%93.15%106, 113–114, 122, 89
   PackFileCacheStrategy.js96.40%100%100%96.40%1250, 1350, 1354, 1416, 628, 647, 657–659, 661, 677–678, 683, 686, 688, 693, 698, 722, 728, 762, 768, 774, 779, 790, 799, 804–805, 807, 824, 830–831, 833
   ResolverCachePlugin.js100%100%100%100%
   getLazyHashedEtag.js100%100%100%100%
   mergeEtags.js100%100%100%100%
lib/config
   browserslistTargetHandler.js100%100%100%100%
   defaults.js99.18%100%100%99.18%1401–1403, 1411, 271, 274, 279, 283, 475
   normalization.js99%100%100%99%191–192, 258, 273
   target.js100%100%100%100%
lib/container
   ContainerEntryDependency.js100%100%100%100%
   ContainerEntryModule.js100%100%100%100%
   ContainerEntryModuleFactory.js100%100%100%100%
   ContainerExposedDependency.js100%100%100%100%
   ContainerPlugin.js100%100%100%100%
   ContainerReferencePlugin.js100%100%100%100%
   FallbackDependency.js100%100%100%100%
   FallbackItemDependency.js100%100%100%100%
   FallbackModule.js100%100%100%100%
   FallbackModuleFactory.js100%100%100%100%
   HoistContainerReferencesPlugin.js100%100%100%100%
   ModuleFederationPlugin.js100%100%100%100%
   RemoteModule.js100%100%100%100%
   

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.

@alexander-akait alexander-akait merged commit 865c051 into main May 19, 2026
63 of 65 checks passed
@alexander-akait alexander-akait deleted the claude/fix-issue-16819-x9nMl branch May 19, 2026 14:17
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.

webpack-dev-server fails if # in project path

2 participants