Add the message in BabelLoaderError's stack trace #499
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.
Please check if the PR fulfills these requirements
What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
What is the current behavior?
When a BabelLoaderError is thrown on Node 8.x, the
message
is not included in thestack
property. When webpack wraps the error in a ModuleBuildError, themessage
is lost from webpack's output:What is the new behavior?
The BabelLoaderError's
message
is included in thestack
property, so even after wrapping in a ModuleBuildError, the error message and the code where the error occurred are visible.Does this PR introduce a breaking change?
Other information:
I had first thought this was a webpack issue, but they suggested this was something the loader should change.
I think the behavior of Error.captureStackTrace may have changed between Node versions, because this behavior appeared when I upgraded from Node 6.x to 8.x. Perhaps the old behavior was to not read the
message
property untilstack
was read, and the new behavior is to readmessage
immediately? I have not had time to verify this, though, this is just speculation.This is the
webpack.config.js
I was using to create the error messages above (entry.js simply contains the textfoo()
):