Skip to content

Commit 84cb48f

Browse files
fix(sdk): preserve remote url search in import meta
1 parent dd1e17b commit 84cb48f

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

packages/sdk/__tests__/node-builtin-esm.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ describe('Node ESM builtin loading', () => {
9090
});
9191

9292
it('bases import.meta.url under the current workspace for createRequire package resolution', async () => {
93-
const remoteEntryUrl = 'http://example.com/server/remoteEntry.js';
93+
const remoteEntryUrl =
94+
'http://example.com/server/remoteEntry.js?v=123#entry';
9495
const fetchMock = setRemoteEntryFetchMock(
9596
remoteEntryUrl,
9697
"import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); const webpack = require('webpack'); export const webpackType = typeof webpack; export const metaUrl = import.meta.url; export default {};",
@@ -105,7 +106,7 @@ describe('Node ESM builtin loading', () => {
105106

106107
expect(['function', 'object']).toContain(scriptContext.webpackType);
107108
expect(scriptContext.metaUrl).toContain(
108-
'__module_federation_remote__/http/example.com/server/remoteEntry.js',
109+
'__module_federation_remote__/http/example.com/server/remoteEntry.js/%3Fv%3D123%23entry',
109110
);
110111
expect(scriptContext.metaUrl.startsWith(cwdBaseUrl)).toBe(true);
111112
expect(fetchMock).toHaveBeenCalledWith(remoteEntryUrl);

packages/sdk/src/node.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,12 @@ function encodeRemoteModulePath(url: string): string {
281281
.split('/')
282282
.map((segment) => encodeURIComponent(segment))
283283
.join('/');
284+
const encodedSearchHash = encodeURIComponent(
285+
`${remoteUrl.search}${remoteUrl.hash}`,
286+
);
287+
const encodedSuffix = encodedSearchHash ? `/${encodedSearchHash}` : '';
284288

285-
return `/${encodedProtocol}/${encodedHost}${encodedPathname}`;
289+
return `/${encodedProtocol}/${encodedHost}${encodedPathname}${encodedSuffix}`;
286290
}
287291

288292
function createImportMetaUrl(url: string, baseFileUrl: string): string {

0 commit comments

Comments
 (0)