Commit a03faf2
module: support ESM detection in the CJS loader
This patch: 1. Adds ESM syntax detection to compileFunctionForCJSLoader() for --experimental-detect-module and allow it to emit the warning for how to load ESM when it's used to parse ESM as CJS but detection is not enabled. 2. Moves the ESM detection of --experimental-detect-module for the entrypoint from executeUserEntryPoint() into Module.prototype._compile() and handle it directly in the CJS loader so that the errors thrown during compilation *and execution* during the loading of the entrypoint does not need to be bubbled all the way up. If the entrypoint doesn't parse as CJS, and detection is enabled, the CJS loader will re-load the entrypoint as ESM on the spot asynchronously using runEntryPointWithESMLoader() and cascadedLoader.import(). This is fine for the entrypoint because unlike require(ESM) we don't the namespace of the entrypoint synchronously, and can just ignore the returned value. In this case process.mainModule is reset to undefined as they are not available for ESM entrypoints. 3. Supports --experimental-detect-module for require(esm). PR-URL: #52047 Backport-PR-URL: #56927 Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Refs: #526971 parent f13589f commit a03faf2
File tree
12 files changed
+206
-129
lines changed- doc/api
- lib/internal/modules
- cjs
- esm
- src
- test/es-module
12 files changed
+206
-129
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
61 | 63 | | |
62 | 64 | | |
63 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
190 | | - | |
191 | | - | |
192 | | - | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
193 | 196 | | |
194 | 197 | | |
195 | 198 | | |
| |||
256 | 259 | | |
257 | 260 | | |
258 | 261 | | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
259 | 271 | | |
260 | 272 | | |
261 | 273 | | |
262 | 274 | | |
263 | | - | |
| 275 | + | |
| 276 | + | |
264 | 277 | | |
265 | 278 | | |
266 | | - | |
| 279 | + | |
| 280 | + | |
267 | 281 | | |
268 | 282 | | |
269 | | - | |
270 | | - | |
271 | 283 | | |
272 | 284 | | |
273 | 285 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
110 | 109 | | |
111 | 110 | | |
112 | 111 | | |
| |||
1333 | 1332 | | |
1334 | 1333 | | |
1335 | 1334 | | |
1336 | | - | |
1337 | | - | |
1338 | | - | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
1339 | 1347 | | |
1340 | 1348 | | |
1341 | 1349 | | |
| |||
1344 | 1352 | | |
1345 | 1353 | | |
1346 | 1354 | | |
| 1355 | + | |
1347 | 1356 | | |
1348 | | - | |
| 1357 | + | |
| 1358 | + | |
1349 | 1359 | | |
1350 | 1360 | | |
1351 | 1361 | | |
| |||
1375 | 1385 | | |
1376 | 1386 | | |
1377 | 1387 | | |
1378 | | - | |
1379 | | - | |
1380 | | - | |
1381 | | - | |
1382 | | - | |
1383 | | - | |
1384 | | - | |
1385 | | - | |
1386 | | - | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
1387 | 1391 | | |
1388 | | - | |
1389 | | - | |
1390 | | - | |
1391 | | - | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
1392 | 1398 | | |
1393 | | - | |
1394 | | - | |
1395 | | - | |
1396 | | - | |
1397 | | - | |
1398 | | - | |
1399 | | - | |
1400 | | - | |
1401 | | - | |
1402 | | - | |
1403 | | - | |
1404 | | - | |
1405 | | - | |
1406 | | - | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
1407 | 1402 | | |
| 1403 | + | |
| 1404 | + | |
1408 | 1405 | | |
1409 | 1406 | | |
1410 | 1407 | | |
1411 | 1408 | | |
1412 | 1409 | | |
1413 | 1410 | | |
1414 | 1411 | | |
1415 | | - | |
| 1412 | + | |
1416 | 1413 | | |
1417 | | - | |
| 1414 | + | |
1418 | 1415 | | |
1419 | 1416 | | |
1420 | 1417 | | |
| |||
1424 | 1421 | | |
1425 | 1422 | | |
1426 | 1423 | | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
| 1432 | + | |
1427 | 1433 | | |
1428 | 1434 | | |
1429 | | - | |
| 1435 | + | |
1430 | 1436 | | |
1431 | 1437 | | |
1432 | 1438 | | |
1433 | 1439 | | |
1434 | 1440 | | |
1435 | 1441 | | |
1436 | | - | |
1437 | | - | |
1438 | 1442 | | |
1439 | 1443 | | |
1440 | 1444 | | |
| |||
1511 | 1515 | | |
1512 | 1516 | | |
1513 | 1517 | | |
| 1518 | + | |
1514 | 1519 | | |
1515 | 1520 | | |
1516 | 1521 | | |
1517 | 1522 | | |
1518 | 1523 | | |
1519 | | - | |
| 1524 | + | |
1520 | 1525 | | |
1521 | 1526 | | |
1522 | 1527 | | |
| |||
1550 | 1555 | | |
1551 | 1556 | | |
1552 | 1557 | | |
| 1558 | + | |
| 1559 | + | |
1553 | 1560 | | |
| 1561 | + | |
| 1562 | + | |
1554 | 1563 | | |
1555 | 1564 | | |
1556 | | - | |
| 1565 | + | |
1557 | 1566 | | |
1558 | 1567 | | |
1559 | 1568 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | 7 | | |
9 | 8 | | |
10 | 9 | | |
| |||
15 | 14 | | |
16 | 15 | | |
17 | 16 | | |
18 | | - | |
19 | 17 | | |
20 | 18 | | |
21 | 19 | | |
| |||
30 | 28 | | |
31 | 29 | | |
32 | 30 | | |
33 | | - | |
34 | 31 | | |
35 | 32 | | |
36 | 33 | | |
| |||
62 | 59 | | |
63 | 60 | | |
64 | 61 | | |
65 | | - | |
66 | 62 | | |
67 | 63 | | |
68 | 64 | | |
| |||
107 | 103 | | |
108 | 104 | | |
109 | 105 | | |
110 | | - | |
111 | 106 | | |
112 | 107 | | |
113 | 108 | | |
| |||
169 | 164 | | |
170 | 165 | | |
171 | 166 | | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
191 | 167 | | |
192 | 168 | | |
193 | 169 | | |
| |||
197 | 173 | | |
198 | 174 | | |
199 | 175 | | |
| 176 | + | |
200 | 177 | | |
201 | | - | |
202 | | - | |
203 | | - | |
204 | | - | |
205 | | - | |
206 | | - | |
207 | | - | |
208 | | - | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
209 | 181 | | |
210 | 182 | | |
211 | 183 | | |
| |||
283 | 255 | | |
284 | 256 | | |
285 | 257 | | |
286 | | - | |
| 258 | + | |
287 | 259 | | |
288 | 260 | | |
289 | 261 | | |
| |||
315 | 287 | | |
316 | 288 | | |
317 | 289 | | |
318 | | - | |
| 290 | + | |
319 | 291 | | |
320 | | - | |
| 292 | + | |
| 293 | + | |
321 | 294 | | |
322 | 295 | | |
323 | 296 | | |
| |||
340 | 313 | | |
341 | 314 | | |
342 | 315 | | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
351 | 319 | | |
352 | 320 | | |
353 | 321 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | | - | |
7 | 5 | | |
8 | 6 | | |
9 | 7 | | |
| |||
160 | 158 | | |
161 | 159 | | |
162 | 160 | | |
163 | | - | |
164 | 161 | | |
165 | 162 | | |
166 | 163 | | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
191 | | - | |
| 164 | + | |
| 165 | + | |
192 | 166 | | |
193 | 167 | | |
194 | 168 | | |
| |||
0 commit comments