-
-
Notifications
You must be signed in to change notification settings - Fork 7.2k
Description
Describe the bug
I'm trying to build one of our company's projects using vite
It is crashing with error
[vite:css-post] Maximum call stack size exceeded
Solution
From the error I narrowed it down that error occurs because of this regex:
export const multilineCommentsRE = /\/\*(.|[\r\n])*?\*\//gm
Found this answer on stack overflow:
https://stackoverflow.com/a/36328890
Turns out we can write more performant regex without "lazy"(?) modifier
I modified it in node modules directly to this:
export const multilineCommentsRE = /\/\*[^*]*\*+(?:[^/*][^*]*\*+)*\//gm
And it all works just fine.
Tried executing this regex manually, it was noticeably faster.
Huge CSS source maps
I modified it to output whole CSS, before comment cleanup, looks like a lot of source maps (for each scss file) were added, each containing 4000000++ characters.
Node js with this big amount of data, when using "lazy ." (.?) inside current regex crashes.
Generated complete CSS file before cleanup and modification with all those symbols contains 140635835 characters
I'm not sure what to do about reproduction example.
I tried generating huge SASS files with huge source map entries, but it didn't seem to care.
Something in our case is causing regex to be even more inefficient for this particular case.
Reproduction
Cannot reproduce it exactly without using company's confidential packages
Steps to reproduce
Import a lot of scss files from node_modules containing source maps.
Generated output will contain those source maps.
For some reason it reproduced only when adding @import url("https://fonts.googleapis.com/css?family=Dancing+Script");
I suspect regex is matching something that make it consume even more steps
System Info
Node 16.15.0
"vite": "^3.2.0"
"sass": "^1.55.0",
Used Package Manager
npm
Logs
Click to expand!
> vite build --debug
vite:config bundled config file loaded in 268.75ms +0ms
vite:esbuild init tsconfck (root: D:/Projects/FieldDataManagementRenderer) +0ms
vite:esbuild init tsconfck (root: D:/Projects/FieldDataManagementRenderer) +2ms
vite:esbuild init tsconfck (root: D:/Projects/FieldDataManagementRenderer) +1ms
vite:esbuild init tsconfck (root: D:/Projects/FieldDataManagementRenderer) +1ms
vite:esbuild init tsconfck end +49ms
vite:esbuild init tsconfck end +0ms
vite:esbuild init tsconfck end +1ms
vite:esbuild init tsconfck end +2ms
vite:config using resolved config: {
vite:config base: './',
vite:config build: {
vite:config target: [ 'es2020', 'edge88', 'firefox78', 'chrome87', 'safari13' ],
vite:config cssTarget: [ 'es2020', 'edge88', 'firefox78', 'chrome87', 'safari13' ],
vite:config outDir: 'dist',
vite:config assetsDir: 'assets',
vite:config assetsInlineLimit: 4096,
vite:config cssCodeSplit: false,
vite:config sourcemap: false,
vite:config rollupOptions: {},
vite:config minify: 'esbuild',
vite:config terserOptions: {},
vite:config write: true,
vite:config emptyOutDir: null,
vite:config copyPublicDir: true,
vite:config manifest: false,
vite:config lib: {
vite:config entry: 'D:\\Projects\\FieldDataManagementRenderer\\src\\form-renderer\\FormRenderer.ts',
vite:config name: 'bentleyformsrenderer',
vite:config formats: [Array],
vite:config fileName: [Function: fileName]
vite:config },
vite:config ssr: false,
vite:config ssrManifest: false,
vite:config reportCompressedSize: true,
vite:config chunkSizeWarningLimit: 500,
vite:config watch: null,
vite:config commonjsOptions: { include: [Array], extensions: [Array] },
vite:config dynamicImportVarsOptions: { warnOnError: true, exclude: [Array] },
vite:config modulePreload: { polyfill: true }
vite:config },
vite:config resolve: {
vite:config mainFields: [ 'module', 'jsnext:main', 'jsnext' ],
vite:config browserField: true,
vite:config conditions: [],
vite:config extensions: [
vite:config '.mjs', '.js',
vite:config '.mts', '.ts',
vite:config '.jsx', '.tsx',
vite:config '.json'
vite:config ],
vite:config dedupe: [],
vite:config preserveSymlinks: false,
vite:config alias: [ [Object], [Object], [Object] ]
vite:config },
vite:config optimizeDeps: {
vite:config disabled: 'build',
vite:config force: undefined,
vite:config esbuildOptions: { preserveSymlinks: false }
vite:config },
vite:config configFile: 'D:/Projects/FieldDataManagementRenderer/vite.config.ts',
vite:config configFileDependencies: [
vite:config 'D:/Projects/FieldDataManagementRenderer/package.json',
vite:config 'D:/Projects/FieldDataManagementRenderer/vite.config.ts'
vite:config ],
vite:config inlineConfig: {
vite:config root: undefined,
vite:config base: undefined,
vite:config mode: undefined,
vite:config configFile: undefined,
vite:config logLevel: undefined,
vite:config clearScreen: undefined,
vite:config optimizeDeps: { force: undefined },
vite:config build: {}
vite:config },
vite:config root: 'D:/Projects/FieldDataManagementRenderer',
vite:config publicDir: 'D:\\Projects\\FieldDataManagementRenderer\\public',
vite:config cacheDir: 'D:\\Projects\\FieldDataManagementRenderer\\node_modules\\.vite',
vite:config command: 'build',
vite:config mode: 'production',
vite:config ssr: {
vite:config format: 'esm',
vite:config target: 'node',
vite:config optimizeDeps: { disabled: true, esbuildOptions: [Object] }
vite:config },
vite:config isWorker: false,
vite:config mainConfig: null,
vite:config isProduction: true,
vite:config plugins: [
vite:config 'vite:build-metadata',
vite:config 'vite:pre-alias',
vite:config 'alias',
vite:config 'vite:modulepreload-polyfill',
vite:config 'vite:resolve',
vite:config 'vite:html-inline-proxy',
vite:config 'vite:css',
vite:config 'vite:esbuild',
vite:config 'vite:json',
vite:config 'vite:wasm-helper',
vite:config 'vite:worker',
vite:config 'vite:asset',
vite:config 'vite:wasm-fallback',
vite:config 'vite:define',
vite:config 'vite:css-post',
vite:config 'vite:build-html',
vite:config 'vite:worker-import-meta-url',
vite:config 'vite:asset-import-meta-url',
vite:config 'vite:force-systemjs-wrap-complete',
vite:config 'vite:watch-package-data',
vite:config 'commonjs',
vite:config 'vite:data-uri',
vite:config 'vite:dynamic-import-vars',
vite:config 'vite:import-glob',
vite:config 'vite:build-import-analysis',
vite:config 'vite:esbuild-transpile',
vite:config 'vite:terser',
vite:config 'vite:reporter',
vite:config 'vite:load-fallback'
vite:config ],
vite:config server: {
vite:config preTransformRequests: true,
vite:config middlewareMode: false,
vite:config fs: { strict: true, allow: [Array], deny: [Array] }
vite:config },
vite:config preview: {
vite:config port: undefined,
vite:config strictPort: undefined,
vite:config host: undefined,
vite:config https: undefined,
vite:config open: undefined,
vite:config proxy: undefined,
vite:config cors: undefined,
vite:config headers: undefined
vite:config },
vite:config env: { BASE_URL: './', MODE: 'production', DEV: false, PROD: true },
vite:config assetsInclude: [Function: assetsInclude],
vite:config logger: {
vite:config hasWarned: false,
vite:config info: [Function: info],
vite:config warn: [Function: warn],
vite:config warnOnce: [Function: warnOnce],
vite:config },
vite:config packageCache: Map(0) { set: [Function (anonymous)] },
vite:config createResolver: [Function: createResolver],
vite:config worker: {
vite:config format: 'iife',
vite:config plugins: [
vite:config 'vite:build-metadata',
vite:config 'vite:pre-alias',
vite:config 'alias',
vite:config 'vite:modulepreload-polyfill',
vite:config 'vite:resolve',
vite:config 'vite:html-inline-proxy',
vite:config 'vite:css',
vite:config 'vite:esbuild',
vite:config 'vite:json',
vite:config 'vite:wasm-helper',
vite:config 'vite:worker',
vite:config 'vite:asset',
vite:config 'vite:wasm-fallback',
vite:config 'vite:define',
vite:config 'vite:css-post',
vite:config 'vite:build-html',
vite:config 'vite:worker-import-meta-url',
vite:config 'vite:asset-import-meta-url',
vite:config 'vite:force-systemjs-wrap-complete',
vite:config 'vite:watch-package-data',
vite:config 'commonjs',
vite:config 'vite:data-uri',
vite:config 'vite:dynamic-import-vars',
vite:config 'vite:import-glob',
vite:config 'vite:build-import-analysis',
vite:config 'vite:esbuild-transpile',
vite:config 'vite:terser',
vite:config 'vite:reporter',
vite:config 'vite:load-fallback'
vite:config ],
vite:config rollupOptions: {},
vite:config getSortedPlugins: [Function: getSortedPlugins],
vite:config getSortedPluginHooks: [Function: getSortedPluginHooks]
vite:config },
vite:config appType: 'spa',
vite:config experimental: { importGlobRestoreExtension: false, hmrPartialAccept: false },
vite:config getSortedPlugins: [Function: getSortedPlugins],
vite:config getSortedPluginHooks: [Function: getSortedPluginHooks]
vite:config } +68ms
vite v3.2.0 building for production...
transforming (104) src\form-renderer\FormRenderer.scss vite:resolve 32.41ms @bentley/bwc/scss/style/colors.scss -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/bwc/scss/style/colors.scss +0ms
vite:resolve 36.34ms @bentley/bwc/scss/progress-indicators/circular.scss -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/bwc/scss/progress-indicators/circular.scss +140ms
vite:resolve 16.79ms @bentley/svg-icons/icons/status/error.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/status/error.svg +0ms
transforming (105) src\form-renderer\components\Label\Label.scss vite:resolve 26.76ms @bentley/bwc/scss/mixins.scss -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/bwc/scss/mixins.scss +284ms
vite:resolve 10.32ms @bentley/svg-icons/icons/image.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/image.svg +11s
transforming (109) src\form-renderer\plugins\Validation\Validation.scss vite:resolve 23.96ms @bentley/svg-icons/default/clock.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/clock.svg +7s
vite:resolve 24.56ms @bentley/svg-icons/icons/clock.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/clock.svg +1ms
transforming (110) src\form-renderer\components\Paragraph\Paragraph.scss vite:resolve 257.39ms @bentley/svg-icons/icons/attach.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/attach.svg +505ms
vite:resolve 258.37ms @bentley/svg-icons/icons/comments.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/comments.svg +1ms
vite:resolve 259.02ms @bentley/svg-icons/icons/punch-list.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/punch-list.svg +1ms
vite:resolve 259.64ms @bentley/svg-icons/icons/link.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/link.svg +0ms
vite:resolve 260.16ms @bentley/svg-icons/icons/flag.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/flag.svg +1ms
vite:resolve 58.43ms @bentley/svg-icons/default/pen.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/pen.svg +55ms
vite:resolve 58.84ms @bentley/svg-icons/icons/pen.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/pen.svg +1ms
vite:resolve 6488.58ms @bentley/bwc/scss/buttons/button.scss -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/bwc/scss/buttons/button.scss +25s
vite:resolve 49.30ms @bentley/svg-icons/icons/chevron-right.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/chevron-right.svg +7s
vite:resolve 49.75ms @bentley/svg-icons/actionable/chevron-right.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/actionable/chevron-right.svg +1ms
vite:resolve 49.85ms @bentley/svg-icons/white/chevron-right.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/chevron-right.svg +0ms
transforming (121) src\form-renderer\components\StaticImage\StaticImage.scss vite:resolve 18.44ms @bentley/svg-icons/icons/photo-add.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/photo-add.svg +197ms
transforming (124) src\form-renderer\components\Drawer\Drawer.scss vite:resolve 10529.49ms @bentley/bwc/scss/tags/index.scss -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/bwc/scss/tags/index.scss +19s
vite:resolve 207.83ms @bentley/bwc/scss/alerts/classes -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/bwc/scss/alerts/classes.scss +3ms
vite:resolve 121.24ms @bentley/svg-icons/default/unlink.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/unlink.svg +19s
vite:resolve 120.70ms @bentley/svg-icons/white/link.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/link.svg +0ms
vite:resolve 120.97ms @bentley/svg-icons/white/camera.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/camera.svg +0ms
vite:resolve 121.33ms @bentley/svg-icons/icons/location.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/location.svg +1ms
vite:resolve 121.53ms @bentley/svg-icons/white/upload.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/upload.svg +0ms
vite:resolve 121.69ms @bentley/svg-icons/icons/cloud.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/cloud.svg +1ms
vite:resolve 122.04ms ../../../resources/icons/clear-day.svg -> D:/Projects/FieldDataManagementRenderer/src/resources/icons/clear-day.svg +0ms
vite:resolve 122.31ms ../../../resources/icons/snow.svg -> D:/Projects/FieldDataManagementRenderer/src/resources/icons/snow.svg +0ms
vite:resolve 122.63ms ../../../resources/icons/rain-shower.svg -> D:/Projects/FieldDataManagementRenderer/src/resources/icons/rain-shower.svg +1ms
vite:resolve 122.98ms ../../../resources/icons/thunderstorm.svg -> D:/Projects/FieldDataManagementRenderer/src/resources/icons/thunderstorm.svg +0ms
vite:resolve 123.31ms @bentley/svg-icons/icons/refresh.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/refresh.svg +0ms
vite:resolve 123.47ms @bentley/svg-icons/default/chevron-down.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/chevron-down.svg +1ms
vite:resolve 123.76ms @bentley/svg-icons/default/chevron-up.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/chevron-up.svg +0ms
vite:resolve 356.70ms @bentley/svg-icons/default/more-vertical.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/more-vertical.svg +3s
vite:resolve 332.44ms @bentley/svg-icons/default/remove.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/remove.svg +0ms
vite:resolve 332.38ms @bentley/svg-icons/default/upload.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/upload.svg +1ms
vite:resolve 332.70ms @bentley/svg-icons/blue/upload.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/blue/upload.svg +0ms
vite:resolve 333.09ms @bentley/svg-icons/blue/document.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/blue/document.svg +0ms
vite:resolve 333.65ms @bentley/svg-icons/icons/file-types/image.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/image.svg +1ms
vite:resolve 334.10ms @bentley/svg-icons/icons/file-types/amim.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/amim.svg +1ms
vite:resolve 334.55ms @bentley/svg-icons/icons/file-types/dgn-db_2.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/dgn-db_2.svg +0ms
vite:resolve 335.13ms @bentley/svg-icons/icons/file-types/dgn-db.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/dgn-db.svg +1ms
vite:resolve 335.48ms @bentley/svg-icons/icons/file-types/document.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/document.svg +0ms
vite:resolve 336.15ms @bentley/svg-icons/icons/file-types/microstation.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/microstation.svg +1ms
vite:resolve 336.71ms @bentley/svg-icons/icons/file-types/mism.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/mism.svg +0ms
vite:resolve 337.08ms @bentley/svg-icons/icons/file-types/pdf.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/pdf.svg +1ms
vite:resolve 337.57ms @bentley/svg-icons/icons/file-types/ppt.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/ppt.svg +0ms
vite:resolve 338.29ms @bentley/svg-icons/icons/file-types/revit.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/revit.svg +1ms
vite:resolve 338.84ms @bentley/svg-icons/icons/file-types/txt.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/txt.svg +1ms
vite:resolve 339.70ms @bentley/svg-icons/icons/file-types/unknown.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/unknown.svg +0ms
vite:resolve 340.39ms @bentley/svg-icons/icons/file-types/video.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/video.svg +1ms
vite:resolve 340.99ms @bentley/svg-icons/icons/file-types/word.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/word.svg +0ms
vite:resolve 341.49ms @bentley/svg-icons/icons/file-types/xls.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/file-types/xls.svg +1ms
vite:resolve 342.17ms @bentley/svg-icons/default/delete.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/default/delete.svg +1ms
transforming (127) src\form-renderer\components\Footer\FooterContent\SaveInstanceFooter.scss vite:resolve 12.01ms @bentley/svg-icons/actionable/caret-down.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/actionable/caret-down.svg +93ms
vite:resolve 27.74ms @bentley/svg-icons/white/caret-down.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/caret-down.svg +2s
vite:resolve 28.20ms @bentley/svg-icons/icons/caret-down.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/caret-down.svg +1ms
vite:resolve 28.51ms @bentley/svg-icons/white/checkmark.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/checkmark.svg +0ms
transforming (139) src\form-renderer\components\SelectList\SelectList.scss vite:resolve 32.37ms @bentley/svg-icons/white/add.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/add.svg +9s
vite:resolve 46.27ms @bentley/svg-icons/white/zoom.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/zoom.svg +2s
vite:resolve 46.80ms @bentley/svg-icons/white/delete.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/delete.svg +0ms
vite:resolve 47.27ms @bentley/svg-icons/white/download.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/white/download.svg +1ms
transforming (144) src\form-renderer\components\Footer\FooterContent\ApprovalStatusViewer.scss vite:resolve 9.96ms @bentley/svg-icons/icons/progress-forward_2.svg -> D:/Projects/FieldDataManagementRenderer/node_modules/@bentley/svg-icons/icons/progress-forward_2.svg +3s
✓ 149 modules transformed.
rendering chunks (1)...[vite:css-post] Maximum call stack size exceeded
error during build:
RangeError: Maximum call stack size exceeded
at String.replace (<anonymous>)
at emptyCssComments (file:///D:/Projects/FieldDataManagementRenderer/node_modules/vite/dist/node/chunks/dep-61d2428a.js:14182:16)
at hoistAtRules (file:///D:/Projects/FieldDataManagementRenderer/node_modules/vite/dist/node/chunks/dep-61d2428a.js:47054:22)
at finalizeCss (file:///D:/Projects/FieldDataManagementRenderer/node_modules/vite/dist/node/chunks/dep-61d2428a.js:46849:21)
at Object.generateBundle (file:///D:/Projects/FieldDataManagementRenderer/node_modules/vite/dist/node/chunks/dep-61d2428a.js:46554:38)
at file:///D:/Projects/FieldDataManagementRenderer/node_modules/rollup/dist/es/shared/rollup.js:22748:40
at processTicksAndRejections (node:internal/process/task_queues:96:5)
Validations
- Follow our Code of Conduct
- Read the Contributing Guidelines.
- Read the docs.
- Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
- Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
- The provided reproduction is a minimal reproducible example of the bug.