Make sure wrapper doesn't invalidate strict mode #29
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.
The overridden module wrapper that decorates the
require
function adds an assignment statement before the module script itself. If that module starts with the"use strict"
directive, that needs to be at the very top of the function to have any effect. The injected assignment invalidates that.This led to a particularly weird bug initially reported to Axios here: axios/axios#3470
The solution is to wrap the module's script into another IIFE.
Note however that this changes the semantics in another way: it adds a stack frame to all modules. This could be an issue if someone is doing something funky with
new Error().stack
.