@@ -87,6 +87,11 @@ pub async fn create_page_ssr_entry_module(
87
87
replacements. push ( ( "VAR_MODULE_DOCUMENT" , & inner_document) ) ;
88
88
replacements. push ( ( "VAR_MODULE_APP" , & inner_app) ) ;
89
89
}
90
+ let source_ident = source. ident ( ) . await ?;
91
+ // for PagesData we apply a ?server-data query parameter to avoid conflicts with the Page
92
+ // module.
93
+ // We need to copy that to all the modules we create.
94
+ let source_query = source_ident. query . clone ( ) ;
90
95
91
96
// Load the file from the next.js codebase.
92
97
let mut source =
@@ -127,13 +132,15 @@ pub async fn create_page_ssr_entry_module(
127
132
let document_module = process_global_item (
128
133
* pages_structure_ref. document ,
129
134
reference_type. clone ( ) ,
135
+ source_query. clone ( ) ,
130
136
ssr_module_context,
131
137
)
132
138
. to_resolved ( )
133
139
. await ?;
134
140
let app_module = process_global_item (
135
141
* pages_structure_ref. app ,
136
142
reference_type. clone ( ) ,
143
+ source_query. clone ( ) ,
137
144
ssr_module_context,
138
145
)
139
146
. to_resolved ( )
@@ -163,6 +170,7 @@ pub async fn create_page_ssr_entry_module(
163
170
reference_type,
164
171
pages_structure,
165
172
next_config,
173
+ source_query. clone ( ) ,
166
174
) ;
167
175
} else {
168
176
ssr_module = wrap_edge_entry (
@@ -186,9 +194,13 @@ pub async fn create_page_ssr_entry_module(
186
194
async fn process_global_item (
187
195
item : Vc < PagesStructureItem > ,
188
196
reference_type : ReferenceType ,
197
+ source_query : RcStr ,
189
198
module_context : Vc < Box < dyn AssetContext > > ,
190
199
) -> Result < Vc < Box < dyn Module > > > {
191
- let source = Vc :: upcast ( FileSource :: new ( item. file_path ( ) . owned ( ) . await ?) ) ;
200
+ let source = Vc :: upcast ( FileSource :: new_with_query (
201
+ item. file_path ( ) . owned ( ) . await ?,
202
+ source_query,
203
+ ) ) ;
192
204
Ok ( module_context. process ( source, reference_type) . module ( ) )
193
205
}
194
206
@@ -202,6 +214,7 @@ async fn wrap_edge_page(
202
214
reference_type : ReferenceType ,
203
215
pages_structure : Vc < PagesStructure > ,
204
216
next_config : Vc < NextConfig > ,
217
+ source_query : RcStr ,
205
218
) -> Result < Vc < Box < dyn Module > > > {
206
219
const INNER : & str = "INNER_PAGE_ENTRY" ;
207
220
@@ -260,26 +273,34 @@ async fn wrap_edge_page(
260
273
INNER_DOCUMENT . into( ) => process_global_item(
261
274
* pages_structure_ref. document,
262
275
reference_type. clone( ) ,
276
+ source_query. clone( ) ,
263
277
asset_context,
264
278
) . to_resolved( ) . await ?,
265
279
INNER_APP . into( ) => process_global_item(
266
280
* pages_structure_ref. app,
267
281
reference_type. clone( ) ,
282
+ source_query. clone( ) ,
268
283
asset_context,
269
284
) . to_resolved( ) . await ?,
270
285
INNER_ERROR . into( ) => process_global_item(
271
286
* pages_structure_ref. error,
272
287
reference_type. clone( ) ,
288
+ source_query. clone( ) ,
273
289
asset_context,
274
290
) . to_resolved( ) . await ?,
275
291
} ;
276
292
277
293
if let Some ( error_500) = pages_structure_ref. error_500 {
278
294
inner_assets. insert (
279
295
INNER_ERROR_500 . into ( ) ,
280
- process_global_item ( * error_500, reference_type. clone ( ) , asset_context)
281
- . to_resolved ( )
282
- . await ?,
296
+ process_global_item (
297
+ * error_500,
298
+ reference_type. clone ( ) ,
299
+ source_query. clone ( ) ,
300
+ asset_context,
301
+ )
302
+ . to_resolved ( )
303
+ . await ?,
283
304
) ;
284
305
}
285
306
0 commit comments