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