Commit e01dd4b
module: do not warn when require(esm) comes from node_modules
As part of the standard experimental feature graduation
policy, when we unflagged require(esm) we moved the
experimental warning to be emitted when require() is
actually used to load ESM, which previously was an error.
However, some packages in the ecosystem have already
being using try-catch to load require(esm) to e.g.
resolve optional dependency, and emitting warning from
there instead of throwing directly could break the CLI
output.
To reduce the disruption for releases, as a compromise, this
patch skips the warning if require(esm) comes from
node_modules, where users typically don't have much control
over the code. This warning will be eventually removed
when require(esm) becomes stable.
This patch was originally intended for the LTS releases,
though it seems there's appetite for it on v23.x as
well so it's re-targeted to the main branch.
PR-URL: #55960
Backport-PR-URL: #56927
Refs: #55217
Refs: #52697
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Jacob Smith <jacob@frende.me>1 parent 011e6e0 commit e01dd4bCopy full SHA for e01dd4b
File tree
Expand file treeCollapse file tree
11 files changed
+120
-20
lines changedOpen diff view settings
Filter options
- lib/internal/modules/cjs
- test
- es-module
- fixtures/es-modules/test_node_modules
- node_modules
- esm
- import-require-esm
- require-esm
Expand file treeCollapse file tree
11 files changed
+120
-20
lines changedOpen diff view settings
Collapse file
lib/internal/modules/cjs/loader.js
Copy file name to clipboardExpand all lines: lib/internal/modules/cjs/loader.js+40-20Lines changed: 40 additions & 20 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
70 | 70 | |
71 | 71 | |
72 | 72 | |
| 73 | + |
73 | 74 | |
74 | 75 | |
75 | 76 | |
| ||
126 | 127 | |
127 | 128 | |
128 | 129 | |
| 130 | + |
129 | 131 | |
130 | 132 | |
131 | 133 | |
| ||
1314 | 1316 | |
1315 | 1317 | |
1316 | 1318 | |
| 1319 | + |
1317 | 1320 | |
1318 | 1321 | |
1319 | 1322 | |
| ||
1341 | 1344 | |
1342 | 1345 | |
1343 | 1346 | |
1344 | | - |
1345 | | - |
1346 | | - |
1347 | | - |
1348 | | - |
1349 | | - |
1350 | | - |
1351 | | - |
1352 | | - |
1353 | | - |
1354 | | - |
1355 | | - |
1356 | | - |
1357 | | - |
| 1347 | + |
| 1348 | + |
| 1349 | + |
| 1350 | + |
| 1351 | + |
| 1352 | + |
| 1353 | + |
| 1354 | + |
| 1355 | + |
| 1356 | + |
| 1357 | + |
| 1358 | + |
1358 | 1359 | |
1359 | | - |
1360 | | - |
| 1360 | + |
| 1361 | + |
| 1362 | + |
| 1363 | + |
| 1364 | + |
| 1365 | + |
| 1366 | + |
| 1367 | + |
| 1368 | + |
| 1369 | + |
| 1370 | + |
| 1371 | + |
| 1372 | + |
| 1373 | + |
| 1374 | + |
| 1375 | + |
| 1376 | + |
| 1377 | + |
| 1378 | + |
| 1379 | + |
| 1380 | + |
| 1381 | + |
| 1382 | + |
| 1383 | + |
| 1384 | + |
1361 | 1385 | |
1362 | 1386 | |
1363 | | - |
1364 | | - |
1365 | | - |
1366 | | - |
1367 | 1387 | |
1368 | 1388 | |
1369 | 1389 | |
|
Collapse file
test/es-module/test-require-node-modules-warning.js
Copy file name to clipboard+59Lines changed: 59 additions & 0 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
| 1 | + |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | + |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | + |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | + |
| 53 | + |
| 54 | + |
| 55 | + |
| 56 | + |
| 57 | + |
| 58 | + |
| 59 | + |
Collapse file
test/fixtures/es-modules/test_node_modules/import-import-require-esm.mjs
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/import-import-require-esm.mjs+2Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Collapse file
test/fixtures/es-modules/test_node_modules/import-require-esm.mjs
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/import-require-esm.mjs+2Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Collapse file
test/fixtures/es-modules/test_node_modules/node_modules/esm/index.js
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/node_modules/esm/index.js+1Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Collapse file
test/fixtures/es-modules/test_node_modules/node_modules/esm/package.json
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/node_modules/esm/package.json+4Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Collapse file
test/fixtures/es-modules/test_node_modules/node_modules/import-require-esm/index.js
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/node_modules/import-require-esm/index.js+2Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Collapse file
test/fixtures/es-modules/test_node_modules/node_modules/import-require-esm/package.json
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/node_modules/import-require-esm/package.json+4Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Collapse file
test/fixtures/es-modules/test_node_modules/node_modules/require-esm/index.js
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/node_modules/require-esm/index.js+2Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Collapse file
test/fixtures/es-modules/test_node_modules/require-esm.js
Copy file name to clipboardExpand all lines: test/fixtures/es-modules/test_node_modules/require-esm.js+2Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments