GeezerVison is showing github.com — module: trim off internal stack frames for require(esm) warnings · nodejs/node@b3971bb
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: lib/internal/modules/cjs/loader.js +4-1Lines changed: 4 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -1389,7 +1389,10 @@ function loadESMFromCJS(mod, filename) { | 1389 | 1389 | messagePrefix = `${from} is loading ES Module ${to} using require().\n`; | 1390 | 1390 | } | 1391 | 1391 | } | 1392 | | - emitExperimentalWarning('Support for loading ES Module in require()', messagePrefix); | | 1392 | + emitExperimentalWarning('Support for loading ES Module in require()', | | 1393 | + messagePrefix, | | 1394 | + undefined, | | 1395 | + parent?.require); | 1393 | 1396 | const { | 1394 | 1397 | wrap, | 1395 | 1398 | namespace, | |
Collapse file Copy file name to clipboardExpand all lines: lib/internal/util.js +8-2Lines changed: 8 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -266,14 +266,20 @@ function slowCases(enc) { | 266 | 266 | } | 267 | 267 | } | 268 | 268 |
| 269 | | -function emitExperimentalWarning(feature, messagePrefix) { | | 269 | +/** | | 270 | + * @param {string} feature Feature name used in the warning message | | 271 | + * @param {string} messagePrefix Prefix of the warning message | | 272 | + * @param {string} code See documentation of process.emitWarning | | 273 | + * @param {string} ctor See documentation of process.emitWarning | | 274 | + */ | | 275 | +function emitExperimentalWarning(feature, messagePrefix, code, ctor) { | 270 | 276 | if (experimentalWarnings.has(feature)) return; | 271 | 277 | experimentalWarnings.add(feature); | 272 | 278 | let msg = `${feature} is an experimental feature and might change at any time`; | 273 | 279 | if (messagePrefix) { | 274 | 280 | msg = messagePrefix + msg; | 275 | 281 | } | 276 | | - process.emitWarning(msg, 'ExperimentalWarning'); | | 282 | + process.emitWarning(msg, 'ExperimentalWarning', code, ctor); | 277 | 283 | } | 278 | 284 |
| 279 | 285 | function filterDuplicateStrings(items, low) { | |
Collapse file Copy file name to clipboard +35Lines changed: 35 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +'use strict'; | | 2 | + | | 3 | +// This checks the warning and the stack trace emitted by the require(esm) | | 4 | +// experimental warning. It can get removed when `require(esm)` becomes stable. | | 5 | + | | 6 | +require('../common'); | | 7 | +const { spawnSyncAndAssert } = require('../common/child_process'); | | 8 | +const fixtures = require('../common/fixtures'); | | 9 | +const assert = require('assert'); | | 10 | + | | 11 | +spawnSyncAndAssert(process.execPath, [ | | 12 | + '--trace-warnings', | | 13 | + fixtures.path('es-modules', 'require-module.js'), | | 14 | +], { | | 15 | + trim: true, | | 16 | + stderr(output) { | | 17 | + const lines = output.split('\n'); | | 18 | + assert.match( | | 19 | + lines[0], | | 20 | + /ExperimentalWarning: CommonJS module .*require-module\.js is loading ES Module .*message\.mjs/ | | 21 | + ); | | 22 | + assert.strictEqual( | | 23 | + lines[1], | | 24 | + 'Support for loading ES Module in require() is an experimental feature and might change at any time' | | 25 | + ); | | 26 | + assert.match( | | 27 | + lines[2], | | 28 | + /at require \(.*modules\/helpers:\d+:\d+\)/ | | 29 | + ); | | 30 | + assert.match( | | 31 | + lines[3], | | 32 | + /at Object\.<anonymous> \(.*require-module\.js:1:1\)/ | | 33 | + ); | | 34 | + } | | 35 | +}); |
Collapse file Copy file name to clipboard +1Lines changed: 1 addition & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +require('./message.mjs'); |
|