crxjs / chrome-extension-tools

Bundling Chrome Extensions can be pretty complex. It doesn't have to be.
https://crxjs.dev/vite-plugin
2.75k stars 182 forks source link

Infinite recursion on build due to circular references in JS chunks #719

Closed fractalo closed 1 year ago

fractalo commented 1 year ago

Build tool

Vite

Where do you see the problem?

Describe the bug

If the js chunk files created by building the content script by vite have circular references, Unable to build with a Maximum call stack size exceeded error due to infinite recursion of the compileFileResources function.

The issue can be fixed by modifying the compileFileResources function to not reprocess files that have already been processed. I'll submit a PR for this.

Reproduction

https://github.com/fractalo/crxjs-vite-dynamic-import

Logs

[crx:web-accessible-resources] RangeError: Maximum call stack size exceeded
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:28)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
    at compileFileResources (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1724:7)
[crx:manifest-post] Error in crx:web-accessible-resources.renderCrxManifest
✓ built in 122ms
error during build:
Error: Error in crx:web-accessible-resources.renderCrxManifest
    at Object.generateBundle (file:///D:/crxjs-vite-dynamic-import/node_modules/@crxjs/vite-plugin/dist/index.mjs:1641:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Bundle.generate (file:///D:/crxjs-vite-dynamic-import/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:17595:9)
    at async file:///D:/crxjs-vite-dynamic-import/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:25941:27
    at async catchUnfinishedHookActions (file:///D:/crxjs-vite-dynamic-import/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:25022:16)
    at async build (file:///D:/crxjs-vite-dynamic-import/node_modules/vite/dist/node/chunks/dep-4d3eff22.js:46477:22)
    at async CAC.<anonymous> (file:///D:/crxjs-vite-dynamic-import/node_modules/vite/dist/node/cli.js:812:9)

System Info

System:
    OS: Windows 10 10.0.22621
    CPU: (12) x64 AMD Ryzen 5 5600X 6-Core Processor
    Memory: 15.67 GB / 31.92 GB
  Binaries:
    Node: 18.14.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 3.3.0 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 9.3.1 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Spartan (44.22621.1702.0), Chromium (113.0.1774.50)
    Internet Explorer: 11.0.22621.1
  npmPackages:
    @crxjs/vite-plugin: ^2.0.0-beta.17 => 2.0.0-beta.17
    vite: ^4.3.8 => 4.3.8

Severity

blocking all usage of RPCE

nandenjin commented 1 year ago

I'm having same problem and the patch #720 works well for me. Waiting merge with thanks for the author.

jacksteamdev commented 1 year ago

Closed by #720

jacksteamdev commented 1 year ago

@fractalo Thank you very much 🎉