Fix for certain child modules not getting cleared #20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When clearing a module, certain child modules seem to be skipped.
This seems to be because the
require.cache[idx].parent.children
array is mutated with anArray.splice
-call inside the next recursive call toclear()
, skipping certain indices in the outerfor
-loop over children.Making a new array fixes the issue.
Looking at the test
clearModule() recursively
, before usingclearModule
,delete require.cache[require.resolve(id)];
is executed. I am not sure if this is part of the expected usage of the function, but the test fails if it is removed. If you swap the order of the imports infixture-with-dependency.js
, the test succeeds.I chose to split the commits into three so that you may first review the failing test, and then consider how the fix should look.