-
-
Notifications
You must be signed in to change notification settings - Fork 606
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"RangeError: Maximum call stack size exceeded" when compiling a file with many requires #689
Comments
@evilebottnawi I believe this is a mistake, it refers issue #698, while this is #689. |
@Gobie problem still exists? |
It does on 1.0.0. Test case can be found in attached commit https://github.com/Gobie/css-loader/commit/ced2c0dc24e2a0af1ea39e1d30a5d5b8e26ffb3f with "half-baked" solution. |
I mistakenly closed the related pull request #690 back in July, but it is still reproducible. |
@Gobie Can you create new issue with minimum reproducible test repo? |
I created #771 with minimal test-case to verify that it is broken. |
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
Given CSS file with 10000 or more classes with URLs, in our case generated from sprites.
The css-loader creates such a JS file, which on compile throws
RangeError: Maximum call stack size exceeded
.What is the expected behavior?
The expected behaviour is to generate a JS file, which can be compiled and executed.
Please mention other relevant information such as your webpack version, Node.js version and Operating System.
Reproducible on 0.28.10, Node 6.11.3 & Node 8.9.4.
Technical details
The issue is that URLs are replaced by requires and
cssAsString
inloader.js
is built by string concatenation"..." + "..." + ... + "..."
which has upper limit in each version of v8, given by it's default stack size.Experimentally measured:
The fix is straightforward, group the string concatenations by fixed amount so it can be compiled using default stack size.
("..." + ... + "...") + ("..." + ... + "...")
The text was updated successfully, but these errors were encountered: