Skip to content

Commit 7eac102

Browse files
fix: context modules now handle rejections correctly (#20455)
1 parent 1f0ab08 commit 7eac102

File tree

3 files changed

+19
-34
lines changed

3 files changed

+19
-34
lines changed

.changeset/dull-waves-look.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"webpack": patch
3+
---
4+
5+
Context modules now handle rejections correctly.

lib/ContextModule.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,12 +1170,16 @@ function webpackAsyncContext(req) {
11701170
])});
11711171
}`
11721172
: `function webpackAsyncContext(req) {
1173-
if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
1174-
return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1175-
'var e = new Error("Cannot find module \'" + req + "\'");',
1176-
"e.code = 'MODULE_NOT_FOUND';",
1177-
"throw e;"
1178-
])});
1173+
try {
1174+
if(!${RuntimeGlobals.hasOwnProperty}(map, req)) {
1175+
return Promise.resolve().then(${runtimeTemplate.basicFunction("", [
1176+
'var e = new Error("Cannot find module \'" + req + "\'");',
1177+
"e.code = 'MODULE_NOT_FOUND';",
1178+
"throw e;"
1179+
])});
1180+
}
1181+
} catch(err) {
1182+
return Promise.reject(err);
11791183
}
11801184
11811185
var ids = map[req], id = ids[0];

test/test262.spectest.js

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,35 +1037,11 @@ const knownBugs = [
10371037
// Weird test
10381038
"expressions/dynamic-import/syntax/valid/nested-with-nested-imports.js",
10391039

1040-
// We need to wrap `__webpack_require__.o(map, req)` in try/catch
1041-
"expressions/dynamic-import/catch/nested-block-import-catch-import-defer-specifier-tostring-abrupt-rejects.js",
1042-
"expressions/dynamic-import/catch/nested-block-import-catch-specifier-tostring-abrupt-rejects.js",
1043-
"expressions/dynamic-import/catch/nested-block-labeled-import-defer-specifier-tostring-abrupt-rejects.js",
1044-
"expressions/dynamic-import/catch/nested-block-labeled-specifier-tostring-abrupt-rejects.js",
1045-
"expressions/dynamic-import/catch/nested-do-while-import-defer-specifier-tostring-abrupt-rejects.js",
1046-
"expressions/dynamic-import/catch/nested-do-while-specifier-tostring-abrupt-rejects.js",
1047-
"expressions/dynamic-import/catch/nested-else-import-catch-import-defer-specifier-tostring-abrupt-rejects.js",
1048-
"expressions/dynamic-import/catch/nested-else-import-catch-specifier-tostring-abrupt-rejects.js",
1049-
"expressions/dynamic-import/catch/nested-function-import-catch-import-defer-specifier-tostring-abrupt-rejects.js",
1050-
"expressions/dynamic-import/catch/nested-function-import-catch-specifier-tostring-abrupt-rejects.js",
1051-
"expressions/dynamic-import/catch/nested-if-import-catch-import-defer-specifier-tostring-abrupt-rejects.js",
1052-
"expressions/dynamic-import/catch/nested-if-import-catch-specifier-tostring-abrupt-rejects.js",
1053-
"expressions/dynamic-import/catch/nested-while-import-catch-import-defer-specifier-tostring-abrupt-rejects.js",
1054-
"expressions/dynamic-import/catch/nested-while-import-catch-specifier-tostring-abrupt-rejects.js",
1055-
"expressions/dynamic-import/catch/top-level-import-catch-import-defer-specifier-tostring-abrupt-rejects.js",
1056-
"expressions/dynamic-import/catch/top-level-import-catch-specifier-tostring-abrupt-rejects.js",
1057-
"expressions/dynamic-import/assignment-expression/cover-parenthesized-expr.js",
1040+
// We need to handle `import.meta` in `import`
10581041
"expressions/dynamic-import/assignment-expression/import-meta.js",
1059-
"expressions/dynamic-import/import-attributes/2nd-param-trailing-comma-reject.js",
1060-
"expressions/dynamic-import/import-attributes/trailing-comma-reject.js",
1061-
"expressions/dynamic-import/catch/nested-arrow-import-catch-import-defer-specifier-tostring-abrupt-rejects.js",
1062-
"expressions/dynamic-import/catch/nested-arrow-import-catch-specifier-tostring-abrupt-rejects.js",
1063-
"expressions/dynamic-import/catch/nested-async-function-await-import-defer-specifier-tostring-abrupt-rejects.js",
1064-
"expressions/dynamic-import/catch/nested-async-function-await-specifier-tostring-abrupt-rejects.js",
1065-
"expressions/dynamic-import/catch/nested-async-function-import-defer-specifier-tostring-abrupt-rejects.js",
1066-
"expressions/dynamic-import/catch/nested-async-function-return-await-import-defer-specifier-tostring-abrupt-rejects.js",
1067-
"expressions/dynamic-import/catch/nested-async-function-return-await-specifier-tostring-abrupt-rejects.js",
1068-
"expressions/dynamic-import/catch/nested-async-function-specifier-tostring-abrupt-rejects.js",
1042+
1043+
// Bug in parser
1044+
"expressions/dynamic-import/assignment-expression/cover-parenthesized-expr.js",
10691045

10701046
// Looks like a bug in webpack
10711047
"module-code/top-level-await/dynamic-import-rejection.js"

0 commit comments

Comments
 (0)