Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a86a295

Browse filesBrowse files
targosaddaleax
authored andcommitted
lib: remove NodeError from the prototype of errors with code
Signed-off-by: Michaël Zasso <targos@protonmail.com> PR-URL: #33857 Refs: #33770 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Zeyu Yang <himself65@outlook.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
1 parent 646e5a4 commit a86a295
Copy full SHA for a86a295

File tree

Expand file treeCollapse file tree

6 files changed

+35
-28
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

6 files changed

+35
-28
lines changed
Open diff view settings
Collapse file

‎lib/internal/errors.js‎

Copy file name to clipboardExpand all lines: lib/internal/errors.js
+28-24Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -248,31 +248,35 @@ function makeSystemErrorWithCode(key) {
248248
}
249249

250250
function makeNodeErrorWithCode(Base, key) {
251-
return class NodeError extends Base {
252-
constructor(...args) {
253-
if (excludedStackFn === undefined) {
254-
super();
255-
} else {
256-
const limit = Error.stackTraceLimit;
257-
Error.stackTraceLimit = 0;
258-
super();
259-
// Reset the limit and setting the name property.
260-
Error.stackTraceLimit = limit;
261-
}
262-
const message = getMessage(key, args, this);
263-
ObjectDefineProperty(this, 'message', {
264-
value: message,
265-
enumerable: false,
266-
writable: true,
267-
configurable: true
268-
});
269-
addCodeToName(this, super.name, key);
270-
this.code = key;
271-
}
272-
273-
toString() {
274-
return `${this.name} [${key}]: ${this.message}`;
251+
return function NodeError(...args) {
252+
let error;
253+
if (excludedStackFn === undefined) {
254+
error = new Base();
255+
} else {
256+
const limit = Error.stackTraceLimit;
257+
Error.stackTraceLimit = 0;
258+
error = new Base();
259+
// Reset the limit and setting the name property.
260+
Error.stackTraceLimit = limit;
275261
}
262+
const message = getMessage(key, args, error);
263+
ObjectDefineProperty(error, 'message', {
264+
value: message,
265+
enumerable: false,
266+
writable: true,
267+
configurable: true,
268+
});
269+
ObjectDefineProperty(error, 'toString', {
270+
value() {
271+
return `${this.name} [${key}]: ${this.message}`;
272+
},
273+
enumerable: false,
274+
writable: true,
275+
configurable: true,
276+
});
277+
addCodeToName(error, Base.name, key);
278+
error.code = key;
279+
return error;
276280
};
277281
}
278282

Collapse file

‎test/message/esm_loader_not_found.out‎

Copy file name to clipboardExpand all lines: test/message/esm_loader_not_found.out
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ internal/modules/run_main.js:*
44
internalBinding('errors').triggerUncaughtException(
55
^
66
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'i-dont-exist' imported from *
7+
at new NodeError (internal/errors.js:*:*)
78
at packageResolve (internal/modules/esm/resolve.js:*:*)
89
at moduleResolve (internal/modules/esm/resolve.js:*:*)
910
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:*:*)
@@ -12,7 +13,6 @@ Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'i-dont-exist' imported from *
1213
at Loader.import (internal/modules/esm/loader.js:*:*)
1314
at internal/process/esm_loader.js:*:*
1415
at Object.initializeLoader (internal/process/esm_loader.js:*:*)
15-
at runMainESM (internal/modules/run_main.js:*:*)
16-
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:*:*) {
16+
at runMainESM (internal/modules/run_main.js:*:*) {
1717
code: 'ERR_MODULE_NOT_FOUND'
1818
}
Collapse file

‎test/message/esm_loader_not_found_cjs_hint_bare.out‎

Copy file name to clipboardExpand all lines: test/message/esm_loader_not_found_cjs_hint_bare.out
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ internal/modules/run_main.js:*
44

55
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '*test*fixtures*node_modules*some_module*obj' imported from *test*fixtures*esm_loader_not_found_cjs_hint_bare.mjs
66
Did you mean to import some_module/obj.js?
7+
at new NodeError (internal/errors.js:*:*)
78
at finalizeResolution (internal/modules/esm/resolve.js:*:*)
89
at packageResolve (internal/modules/esm/resolve.js:*:*)
910
at moduleResolve (internal/modules/esm/resolve.js:*:*)
Collapse file

‎test/message/esm_loader_not_found_cjs_hint_relative.out‎

Copy file name to clipboardExpand all lines: test/message/esm_loader_not_found_cjs_hint_relative.out
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ internal/modules/run_main.js:*
66

77
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '*test*common*fixtures' imported from *
88
Did you mean to import ./test/common/fixtures.js?
9+
at new NodeError (internal/errors.js:*:*)
910
at finalizeResolution (internal/modules/esm/resolve.js:*:*)
1011
at moduleResolve (internal/modules/esm/resolve.js:*:*)
1112
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:*:*)
@@ -14,7 +15,6 @@ Did you mean to import ./test/common/fixtures.js?
1415
at Loader.import (internal/modules/esm/loader.js:*:*)
1516
at internal/process/esm_loader.js:*:*
1617
at Object.initializeLoader (internal/process/esm_loader.js:*:*)
17-
at runMainESM (internal/modules/run_main.js:*:*)
18-
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:*:*) {
18+
at runMainESM (internal/modules/run_main.js:*:*) {
1919
code: 'ERR_MODULE_NOT_FOUND'
2020
}
Collapse file

‎test/message/internal_assert.out‎

Copy file name to clipboardExpand all lines: test/message/internal_assert.out
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ internal/assert.js:*
55
Error [ERR_INTERNAL_ASSERTION]: This is caused by either a bug in Node.js or incorrect usage of Node.js internals.
66
Please open an issue with this stack trace at https://github.com/nodejs/node/issues
77

8+
at new NodeError (internal/errors.js:*:*)
89
at assert (internal/assert.js:*:*)
910
at * (*test*message*internal_assert.js:7:1)
1011
at *
Collapse file

‎test/message/internal_assert_fail.out‎

Copy file name to clipboardExpand all lines: test/message/internal_assert_fail.out
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Error [ERR_INTERNAL_ASSERTION]: Unreachable!
66
This is caused by either a bug in Node.js or incorrect usage of Node.js internals.
77
Please open an issue with this stack trace at https://github.com/nodejs/node/issues
88

9+
at new NodeError (internal/errors.js:*:*)
910
at Function.fail (internal/assert.js:*:*)
1011
at * (*test*message*internal_assert_fail.js:7:8)
1112
at *

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.