Merge pull request #11131 from webpack/bugfix/ignore-linking-errors-on-error
ignore linking errors when the imported module has errors
This commit is contained in:
commit
49e5ce2812
|
@ -433,6 +433,13 @@ class Module extends DependenciesBlock {
|
|||
return this._warnings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {number} number of warnings
|
||||
*/
|
||||
getNumberOfWarnings() {
|
||||
return this._warnings !== undefined ? this._warnings.length : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {WebpackError} error the error
|
||||
* @returns {void}
|
||||
|
@ -451,6 +458,13 @@ class Module extends DependenciesBlock {
|
|||
return this._errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {number} number of errors
|
||||
*/
|
||||
getNumberOfErrors() {
|
||||
return this._errors !== undefined ? this._errors.length : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* removes all warnings and errors
|
||||
* @returns {void}
|
||||
|
|
|
@ -95,7 +95,8 @@ class HarmonyImportDependency extends ModuleDependency {
|
|||
*/
|
||||
getLinkingErrors(moduleGraph, ids, additionalMessage) {
|
||||
const importedModule = moduleGraph.getModule(this);
|
||||
if (!importedModule) {
|
||||
// ignore errors for missing or failed modules
|
||||
if (!importedModule || importedModule.getNumberOfErrors() > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
module.exports = [
|
||||
[/export 'default' \(imported as 'a'\) was not found in '\.\/loader!\.\/a'/],
|
||||
[/export 'default' \(imported as 'a'\) was not found in '\.\/loader!\.\/a'/],
|
||||
[/export 'default' \(imported as 'a'\) was not found in '\.\/loader!\.\/a'/]
|
||||
]
|
|
@ -1,5 +0,0 @@
|
|||
module.exports = [
|
||||
[/export 'default' \(imported as 'a'\) was not found in '\.\/a'/],
|
||||
[/export 'default' \(imported as 'a'\) was not found in '\.\/a'/],
|
||||
[/export 'default' \(imported as 'a'\) was not found in '\.\/a'/]
|
||||
]
|
|
@ -0,0 +1 @@
|
|||
module.exports = [[/Module parse failed/]];
|
|
@ -0,0 +1,26 @@
|
|||
it("should recover from syntax error in module", async () => {
|
||||
switch (WATCH_STEP) {
|
||||
case "0":
|
||||
case "2":
|
||||
await expect(import("test-module")).rejects.toEqual(
|
||||
expect.objectContaining({
|
||||
message: expect.stringContaining("Module parse failed")
|
||||
})
|
||||
);
|
||||
break;
|
||||
case "1":
|
||||
await expect(import("test-module")).resolves.toEqual(
|
||||
expect.objectContaining({
|
||||
default: 42
|
||||
})
|
||||
);
|
||||
break;
|
||||
case "3":
|
||||
await expect(import("test-module")).resolves.toEqual(
|
||||
expect.objectContaining({
|
||||
default: 43
|
||||
})
|
||||
);
|
||||
break;
|
||||
}
|
||||
});
|
1
test/watchCases/recover-from-error/parse-failed-esm/0/node_modules/some-module/index.js
generated
vendored
Normal file
1
test/watchCases/recover-from-error/parse-failed-esm/0/node_modules/some-module/index.js
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
export default 42*;
|
1
test/watchCases/recover-from-error/parse-failed-esm/0/node_modules/test-module/index.js
generated
vendored
Normal file
1
test/watchCases/recover-from-error/parse-failed-esm/0/node_modules/test-module/index.js
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
export { default as default } from "some-module";
|
1
test/watchCases/recover-from-error/parse-failed-esm/1/node_modules/some-module/index.js
generated
vendored
Normal file
1
test/watchCases/recover-from-error/parse-failed-esm/1/node_modules/some-module/index.js
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
export default 42;
|
|
@ -0,0 +1 @@
|
|||
module.exports = [[/Module parse failed/]];
|
1
test/watchCases/recover-from-error/parse-failed-esm/2/node_modules/some-module/index.js
generated
vendored
Normal file
1
test/watchCases/recover-from-error/parse-failed-esm/2/node_modules/some-module/index.js
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
export default 42*;
|
1
test/watchCases/recover-from-error/parse-failed-esm/3/node_modules/some-module/index.js
generated
vendored
Normal file
1
test/watchCases/recover-from-error/parse-failed-esm/3/node_modules/some-module/index.js
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
export default 43;
|
|
@ -3890,8 +3890,10 @@ declare class Module extends DependenciesBlock {
|
|||
addPresentationalDependency(presentationalDependency: Dependency): void;
|
||||
addWarning(warning: WebpackError): void;
|
||||
getWarnings(): Iterable<WebpackError>;
|
||||
getNumberOfWarnings(): number;
|
||||
addError(error: WebpackError): void;
|
||||
getErrors(): Iterable<WebpackError>;
|
||||
getNumberOfErrors(): number;
|
||||
|
||||
/**
|
||||
* removes all warnings and errors
|
||||
|
|
Loading…
Reference in New Issue