fix rejection when removing and readding self-accepted module

fixes #9198

Co-authored-by: rixo <eric@rixo.fr>
This commit is contained in:
Tobias Koppers 2019-05-29 09:25:05 +02:00
parent 671cb184e3
commit 46b428b9d9
4 changed files with 39 additions and 4 deletions

View File

@ -290,7 +290,7 @@ module.exports = function() {
var outdatedModules = [updateModuleId];
var outdatedDependencies = {};
var queue = outdatedModules.slice().map(function(id) {
var queue = outdatedModules.map(function(id) {
return {
chain: [id],
id: id
@ -467,12 +467,15 @@ module.exports = function() {
moduleId = outdatedModules[i];
if (
installedModules[moduleId] &&
installedModules[moduleId].hot._selfAccepted
)
installedModules[moduleId].hot._selfAccepted &&
// removed self-accepted modules should not be required
appliedUpdate[moduleId] !== warnUnexpectedRequire
) {
outdatedSelfAcceptedModules.push({
module: moduleId,
errorHandler: installedModules[moduleId].hot._selfAccepted
});
}
}
// Now in "dispose" phase
@ -539,7 +542,7 @@ module.exports = function() {
}
}
// Not in "apply" phase
// Now in "apply" phase
hotSetStatus("apply");
hotCurrentHash = hotUpdateNewHash;

View File

@ -0,0 +1,20 @@
import ok from "./module";
it("should abort when module is not accepted", done => {
expect(ok).toBe("ok1-inner");
NEXT(
require("../../update")(done, true, () => {
expect(ok).toBe("ok2");
NEXT(
require("../../update")(done, true, () => {
expect(ok).toBe("ok3-inner");
done();
})
);
})
);
});
if (module.hot) {
module.hot.accept("./module");
}

View File

@ -0,0 +1,3 @@
module.hot.accept();
export default "-inner";

View File

@ -0,0 +1,9 @@
import inner from "./inner";
export default "ok1" + inner;
---
export default "ok2";
---
import inner from "./inner";
export default "ok3" + inner;