mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
errors,vm: update error and use cause
PR-URL: https://github.com/nodejs/node/pull/42820 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
This commit is contained in:
@@ -2853,12 +2853,6 @@ Cached data cannot be created for modules which have already been evaluated.
|
||||
The module being returned from the linker function is from a different context
|
||||
than the parent module. Linked modules must share the same context.
|
||||
|
||||
<a id="ERR_VM_MODULE_LINKING_ERRORED"></a>
|
||||
|
||||
### `ERR_VM_MODULE_LINKING_ERRORED`
|
||||
|
||||
The linker function returned a module for which linking has failed.
|
||||
|
||||
<a id="ERR_VM_MODULE_LINK_FAILURE"></a>
|
||||
|
||||
### `ERR_VM_MODULE_LINK_FAILURE`
|
||||
@@ -3344,6 +3338,17 @@ Used when a given value is out of the accepted range.
|
||||
|
||||
The module must be successfully linked before instantiation.
|
||||
|
||||
<a id="ERR_VM_MODULE_LINKING_ERRORED"></a>
|
||||
|
||||
### `ERR_VM_MODULE_LINKING_ERRORED`
|
||||
|
||||
<!-- YAML
|
||||
added: v10.0.0
|
||||
removed: REPLACEME
|
||||
-->
|
||||
|
||||
The linker function returned a module for which linking has failed.
|
||||
|
||||
<a id="ERR_WORKER_UNSUPPORTED_EXTENSION"></a>
|
||||
|
||||
### `ERR_WORKER_UNSUPPORTED_EXTENSION`
|
||||
|
||||
@@ -1653,8 +1653,10 @@ E('ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA',
|
||||
'Cached data cannot be created for a module which has been evaluated', Error);
|
||||
E('ERR_VM_MODULE_DIFFERENT_CONTEXT',
|
||||
'Linked modules must use the same context', Error);
|
||||
E('ERR_VM_MODULE_LINKING_ERRORED',
|
||||
'Linking has already failed for the provided module', Error);
|
||||
E('ERR_VM_MODULE_LINK_FAILURE', function(message, cause) {
|
||||
this.cause = cause;
|
||||
return message;
|
||||
}, Error);
|
||||
E('ERR_VM_MODULE_NOT_MODULE',
|
||||
'Provided module is not an instance of Module', Error);
|
||||
E('ERR_VM_MODULE_STATUS', 'Module status %s', Error);
|
||||
|
||||
@@ -34,7 +34,7 @@ const {
|
||||
ERR_VM_MODULE_ALREADY_LINKED,
|
||||
ERR_VM_MODULE_DIFFERENT_CONTEXT,
|
||||
ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA,
|
||||
ERR_VM_MODULE_LINKING_ERRORED,
|
||||
ERR_VM_MODULE_LINK_FAILURE,
|
||||
ERR_VM_MODULE_NOT_MODULE,
|
||||
ERR_VM_MODULE_STATUS,
|
||||
} = require('internal/errors').codes;
|
||||
@@ -317,9 +317,7 @@ class SourceTextModule extends Module {
|
||||
throw new ERR_VM_MODULE_DIFFERENT_CONTEXT();
|
||||
}
|
||||
if (module.status === 'errored') {
|
||||
// TODO(devsnek): replace with ERR_VM_MODULE_LINK_FAILURE
|
||||
// and error cause proposal.
|
||||
throw new ERR_VM_MODULE_LINKING_ERRORED();
|
||||
throw new ERR_VM_MODULE_LINK_FAILURE(`request for '${identifier}' resolved to an errored module`, module.error);
|
||||
}
|
||||
if (module.status === 'unlinked') {
|
||||
await module[kLink](linker);
|
||||
|
||||
@@ -139,20 +139,25 @@ async function checkLinking() {
|
||||
code: 'ERR_VM_MODULE_DIFFERENT_CONTEXT'
|
||||
});
|
||||
|
||||
const error = new Error();
|
||||
await assert.rejects(async () => {
|
||||
const erroredModule = new SourceTextModule('import "foo";');
|
||||
globalThis.error = error;
|
||||
const erroredModule = new SourceTextModule('throw error;');
|
||||
await erroredModule.link(common.mustNotCall());
|
||||
try {
|
||||
await erroredModule.link(common.mustCall(() => ({})));
|
||||
await erroredModule.evaluate();
|
||||
} catch {
|
||||
// ignored
|
||||
} finally {
|
||||
assert.strictEqual(erroredModule.status, 'errored');
|
||||
}
|
||||
delete globalThis.error;
|
||||
|
||||
assert.strictEqual(erroredModule.status, 'errored');
|
||||
|
||||
const rootModule = new SourceTextModule('import "errored";');
|
||||
await rootModule.link(common.mustCall(() => erroredModule));
|
||||
}, {
|
||||
code: 'ERR_VM_MODULE_LINKING_ERRORED'
|
||||
code: 'ERR_VM_MODULE_LINK_FAILURE',
|
||||
cause: error,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user