Skip to content

@vitejs/plugin-legacy fails after upgrading to Vite 7.3.2, but works when esbuild is overridden to 0.27.4 #22225

@GXX182

Description

@GXX182

Describe the bug

Describe the bug

After upgrading Vite to 7.3.2, @vitejs/plugin-legacy started failing during the
legacy downgrade/transformation flow.

I investigated the issue and found that forcing esbuild to 0.27.4 makes the problem
disappear:

{
  "overrides": {
    "esbuild": "0.27.4"
  }
}

So this appears to be a compatibility issue related to esbuild version resolution after
upgrading Vite.

Reproduction

Please provide a minimal reproduction repo if needed. I can prepare one.

Steps to reproduce

  1. Upgrade Vite to 7.3.2
  2. Use @vitejs/plugin-legacy
  3. Run the build
  4. See the failure
  5. Add:
{
  "overrides": {
    "esbuild": "0.27.4"
  }
}
  1. Reinstall dependencies
  2. The problem disappears

Expected behavior

@vitejs/plugin-legacy should work correctly after upgrading to Vite 7.3.2 without
requiring an esbuild override.

Actual behavior

The build fails during the legacy transform step.

Error message

error during build:
[vite:esbuild-transpile] Transform failed with 1 error:
assets/_plugin-vue_export-helper-!~{014}~.js:3:13: ERROR: Transforming destructuring to the configured target environment ("chrome64", "edge79", "es2020", "firefox67", "safari12" + 2 overrides) is not supported yet
file: assets/_plugin-vue_export-helper-!~{014}~.js:3:13

Transforming destructuring to the configured target environment ("chrome64", "edge79", "es2020", "firefox67", "safari12" + 2 overrides) is not supported yet
1  |  const _export_sfc = (sfc, props) => {
2  |    const target = sfc.__vccOpts || sfc;
3  |    for (const [key, val] of props) {
   |               ^
4  |      target[key] = val;
5  |    }

    at failureErrorWithLog (D:\pro\lele-h5\leleyuyin-H5-vite\node_modules\esbuild\lib\main.js:1748:15)
    at D:\pro\lele-h5\leleyuyin-H5-vite\node_modules\esbuild\lib\main.js:1017:50
    at responseCallbacks.<computed> (D:\pro\lele-h5\leleyuyin-H5-vite\node_modules\esbuild\lib\main.js:884:9)
    at handleIncomingPacket (D:\pro\lele-h5\leleyuyin-H5-vite\node_modules\esbuild\lib\main.js:939:12)
    at Socket.readFromStdout (D:\pro\lele-h5\leleyuyin-H5-vite\node_modules\esbuild\lib\main.js:862:7)
    at Socket.emit (node:events:524:28)
    at addChunk (node:internal/streams/readable:561:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
    at Readable.push (node:internal/streams/readable:392:5)
    at Pipe.onStreamRead (node:internal/stream_base_commons:191:23)

Environment

  • Vite: 7.3.2
  • @vitejs/plugin-legacy: ^7.2.1
  • esbuild: ^0.28.0
  • Node: 20.19.0
  • Package manager: npm
  • OS: Windows

Additional context

I also found related discussion/issues in the esbuild repository, which made me suspect
this may be caused by an esbuild compatibility change.
If helpful, I can provide the exact error stack and a minimal reproduction repository.

Reproduction

https://github.com/GXX182/vite-legacy-bug

Steps to reproduce

No response

System Info

System:
    OS: Windows 10 10.0.19045
    CPU: (12) x64 11th Gen Intel(R) Core(TM) i5-11400 @ 2.60GHz
    Memory: 11.60 GB / 31.82 GB
  Binaries:
    Node: 20.19.0 - C:\Program Files\nodejs\node.EXE
    npm: 10.8.2 - C:\Program Files\nodejs\npm.CMD
    pnpm: 10.22.0 - C:\Program Files\nodejs\pnpm.CMD
  Browsers:
    Chrome: 146.0.7680.178
    Edge: Chromium (140.0.3485.54)
    Internet Explorer: 11.0.19041.4355
  npmPackages:
    @vitejs/plugin-legacy: ^7.2.1 => 7.2.1
    @vitejs/plugin-vue: ^6.0.5 => 6.0.6
    vite: 7.3.2 => 7.3.2

Used Package Manager

npm

Logs

No response

Validations

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions