Skip to content

Commit a86a295

Browse files
targosaddaleax
authored andcommittedJun 19, 2020
lib: remove NodeError from the prototype of errors with code
Signed-off-by: Michaël Zasso <[email protected]> PR-URL: #33857 Refs: #33770 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Zeyu Yang <[email protected]> Reviewed-By: Tobias Nießen <[email protected]>
1 parent 646e5a4 commit a86a295

6 files changed

+35
-28
lines changed
 

‎lib/internal/errors.js

+28-24
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

‎test/message/esm_loader_not_found.out

+2-2
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
}

‎test/message/esm_loader_not_found_cjs_hint_bare.out

+1
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:*:*)

‎test/message/esm_loader_not_found_cjs_hint_relative.out

+2-2
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
}

‎test/message/internal_assert.out

+1
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 *

‎test/message/internal_assert_fail.out

+1
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)
Please sign in to comment.