sveltejs / kit

web development, streamlined
https://kit.svelte.dev
MIT License
18.51k stars 1.9k forks source link

[vite-plugin-sveltekit-compile] Cannot read properties of undefined (reading 'filter') #9515

Open lily756 opened 1 year ago

lily756 commented 1 year ago

Describe the bug

When use @vitejs/plugin-legacy and build project will report a error like title

Reproduction

init a project

npm create svelte@latest myapp
    select SvelteKit demo app and use js with jsdoc without eslint prettier
cd myapp 
npm i
npm add -D terser @vitejs/plugin-legacy

and this is my vite.config.js

import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vitest/config';
import legacy from '@vitejs/plugin-legacy'

export default defineConfig({
    plugins: [sveltekit(),
    legacy({
        targets: ['ie >= 11'],
        // additionalLegacyPolyfills: ['regenerator-runtime/runtime']
    })],
    test: {
        include: ['src/**/*.{test,spec}.{js,ts}']
    }
});

then run npm run build

Logs

npm run build

> myapp1@0.0.1 build
> vite build

vite v4.2.1 building SSR bundle for production...
transforming (76) src\routes\styles.css"confetti" is imported from external module "@neoconfetti/svelte" but never used in "src/routes/sverdle/+page.svelte".
✓ 76 modules transformed.
03:49:34 [vite-plugin-svelte] ssr compile done.
package files    time      avg
myapp1      9   0.12s   13.6ms

vite v4.2.1 building for production...
✓ 68 modules transformed.
03:49:35 [vite-plugin-svelte] dom compile done.
package files    time      avg
myapp1      9   0.21s   23.9ms
.svelte-kit/output/client/_app/immutable/chunks/environment-legacy.4dce968a.js                       0.09 kB │ gzip:  0.10 kB
.svelte-kit/output/client/_app/immutable/entry/_page.js-legacy.818d04a5.js                           0.16 kB │ gzip:  0.15 kB
.svelte-kit/output/client/_app/immutable/chunks/1-legacy.2fe92f75.js                                 0.17 kB │ gzip:  0.16 kB
.svelte-kit/output/client/_app/immutable/chunks/0-legacy.f6c69d6b.js                                 0.17 kB │ gzip:  0.16 kB
.svelte-kit/output/client/_app/immutable/chunks/4-legacy.e8750627.js                                 0.18 kB │ gzip:  0.16 kB
.svelte-kit/output/client/_app/immutable/chunks/_page-legacy.5cb57f9d.js                             0.21 kB │ gzip:  0.18 kB
.svelte-kit/output/client/_app/immutable/entry/sverdle-how-to-play-page.js-legacy.28e9ddcd.js        0.21 kB │ gzip:  0.18 kB
.svelte-kit/output/client/_app/immutable/entry/about-page.js-legacy.28e9ddcd.js                      0.21 kB │ gzip:  0.18 kB
.svelte-kit/output/client/_app/immutable/chunks/2-legacy.738b7e2a.js                                 0.23 kB │ gzip:  0.19 kB
.svelte-kit/output/client/_app/immutable/chunks/3-legacy.27edf6bc.js                                 0.24 kB │ gzip:  0.19 kB
.svelte-kit/output/client/_app/immutable/chunks/5-legacy.095529f5.js                                 0.25 kB │ gzip:  0.20 kB
.svelte-kit/output/client/_app/immutable/chunks/_page-legacy.605e5302.js                             0.30 kB │ gzip:  0.24 kB
.svelte-kit/output/client/_app/immutable/chunks/_page-legacy.57cccc63.js                             0.30 kB │ gzip:  0.24 kB
.svelte-kit/output/client/_app/immutable/chunks/stores-legacy.424e3504.js                            0.32 kB │ gzip:  0.20 kB
.svelte-kit/output/client/_app/immutable/chunks/parse-legacy.f8ebba68.js                             1.66 kB │ gzip:  0.80 kB
.svelte-kit/output/client/_app/immutable/chunks/index-legacy.76424930.js                             1.82 kB │ gzip:  0.94 kB
.svelte-kit/output/client/_app/immutable/entry/error.svelte-legacy.e95abda1.js                       4.29 kB │ gzip:  1.87 kB
.svelte-kit/output/client/_app/immutable/entry/about-page.svelte-legacy.26caac0f.js                  4.89 kB │ gzip:  2.03 kB
.svelte-kit/output/client/_app/immutable/entry/sverdle-how-to-play-page.svelte-legacy.149be04b.js    8.59 kB │ gzip:  3.26 kB
.svelte-kit/output/client/_app/immutable/entry/app-legacy.9260f420.js                                8.87 kB │ gzip:  3.20 kB
.svelte-kit/output/client/_app/immutable/chunks/index-legacy.36d073a9.js                            10.97 kB │ gzip:  4.32 kB
.svelte-kit/output/client/_app/immutable/entry/_page.svelte-legacy.2c4d30f9.js                      10.99 kB │ gzip:  4.37 kB
.svelte-kit/output/client/_app/immutable/chunks/singletons-legacy.3bacab32.js                       11.27 kB │ gzip:  4.30 kB
.svelte-kit/output/client/_app/immutable/entry/_layout.svelte-legacy.b3a2cda6.js                    14.49 kB │ gzip:  4.97 kB
.svelte-kit/output/client/_app/immutable/entry/sverdle-page.svelte-legacy.9ade52de.js               33.80 kB │ gzip: 11.86 kB
.svelte-kit/output/client/_app/immutable/entry/start-legacy.1bf605ba.js                             47.01 kB │ gzip: 15.37 kB
.svelte-kit/output/client/_app/immutable/polyfills-legacy.a1ac9343.js                              111.79 kB │ gzip: 44.77 kB
.svelte-kit/output/client/_app/version.json                                                         0.03 kB
.svelte-kit/output/client/_app/immutable/assets/github.1ea8d62e.svg                                 1.75 kB
.svelte-kit/output/client/_app/immutable/assets/svelte-logo.87df40b8.svg                            1.89 kB
.svelte-kit/output/client/_app/immutable/assets/fira-mono-greek-ext-400-normal.9e2fe623.woff2       7.51 kB
.svelte-kit/output/client/_app/immutable/assets/fira-mono-cyrillic-400-normal.c7d433fd.woff2        9.10 kB
.svelte-kit/output/client/_app/immutable/assets/fira-mono-greek-400-normal.a8be01ce.woff2          10.52 kB
.svelte-kit/output/client/_app/immutable/assets/fira-mono-latin-ext-400-normal.6bfabd30.woff2      11.36 kB
.svelte-kit/output/client/_app/immutable/assets/fira-mono-cyrillic-ext-400-normal.3df7909e.woff2   15.77 kB
.svelte-kit/output/client/_app/immutable/assets/fira-mono-latin-400-normal.e43b3538.woff2          16.28 kB
.svelte-kit/output/client/vite-manifest.json                                                       17.86 kB
.svelte-kit/output/client/_app/immutable/assets/fira-mono-all-400-normal.1e3b098c.woff             77.36 kB
.svelte-kit/output/client/_app/immutable/assets/svelte-welcome.c18bcf5a.webp                      115.47 kB
.svelte-kit/output/client/_app/immutable/assets/svelte-welcome.6c300099.png                       360.81 kB
.svelte-kit/output/client/_app/immutable/assets/_page.358c415e.css                                  0.82 kB │ gzip: 0.35 kB
.svelte-kit/output/client/_app/immutable/assets/_page.265a38f0.css                                  1.45 kB │ gzip: 0.53 kB
.svelte-kit/output/client/_app/immutable/assets/_page.3fab429f.css                                  3.81 kB │ gzip: 1.07 kB
.svelte-kit/output/client/_app/immutable/assets/_layout.de12584b.css                                5.20 kB │ gzip: 1.66 kB
.svelte-kit/output/client/_app/immutable/chunks/environment.9aa685ef.js                             0.03 kB │ gzip: 0.05 kB
.svelte-kit/output/client/_app/immutable/chunks/1.8ac850bd.js                                       0.08 kB │ gzip: 0.10 kB
.svelte-kit/output/client/_app/immutable/chunks/0.728c83e5.js                                       0.09 kB │ gzip: 0.10 kB
.svelte-kit/output/client/_app/immutable/chunks/4.74f478d8.js                                       0.09 kB │ gzip: 0.10 kB
.svelte-kit/output/client/_app/immutable/chunks/2.a919aa70.js                                       0.14 kB │ gzip: 0.13 kB
.svelte-kit/output/client/_app/immutable/chunks/_page.da46b06b.js                                   0.14 kB │ gzip: 0.14 kB
.svelte-kit/output/client/_app/immutable/chunks/3.116e9dbd.js                                       0.14 kB │ gzip: 0.13 kB
.svelte-kit/output/client/_app/immutable/chunks/5.2cea7012.js                                       0.16 kB │ gzip: 0.14 kB
.svelte-kit/output/client/_app/immutable/entry/_page.js.8fbef9d3.js                                 0.17 kB │ gzip: 0.16 kB
.svelte-kit/output/client/_app/immutable/chunks/_page.1806d283.js                                   0.20 kB │ gzip: 0.18 kB
.svelte-kit/output/client/_app/immutable/chunks/_page.40474c2a.js                                   0.20 kB │ gzip: 0.18 kB
.svelte-kit/output/client/_app/immutable/entry/about-page.js.a6816201.js                            0.23 kB │ gzip: 0.19 kB
.svelte-kit/output/client/_app/immutable/entry/sverdle-how-to-play-page.js.a6816201.js              0.23 kB │ gzip: 0.19 kB
.svelte-kit/output/client/_app/immutable/chunks/stores.219db425.js                                  0.24 kB │ gzip: 0.17 kB
.svelte-kit/output/client/_app/immutable/chunks/index.fec15d98.js                                   0.50 kB │ gzip: 0.33 kB
.svelte-kit/output/client/_app/immutable/entry/error.svelte.f366197c.js                             0.90 kB │ gzip: 0.56 kB
.svelte-kit/output/client/_app/immutable/chunks/parse.d12b0d5b.js                                   1.32 kB │ gzip: 0.65 kB
.svelte-kit/output/client/_app/immutable/chunks/singletons.06279ebd.js                              2.49 kB │ gzip: 1.27 kB
.svelte-kit/output/client/_app/immutable/entry/about-page.svelte.b1ff7cc1.js                        2.58 kB │ gzip: 1.18 kB
.svelte-kit/output/client/_app/immutable/entry/_layout.svelte.01683685.js                           5.24 kB │ gzip: 2.01 kB
.svelte-kit/output/client/_app/immutable/entry/sverdle-how-to-play-page.svelte.1b3a9631.js          5.36 kB │ gzip: 2.03 kB
.svelte-kit/output/client/_app/immutable/entry/_page.svelte.bd0ea470.js                             5.77 kB │ gzip: 2.57 kB
.svelte-kit/output/client/_app/immutable/entry/app.1f01e37c.js                                      6.86 kB │ gzip: 2.56 kB
.svelte-kit/output/client/_app/immutable/chunks/index.f43cbd37.js                                   8.37 kB │ gzip: 3.42 kB
.svelte-kit/output/client/_app/immutable/entry/sverdle-page.svelte.87ecbf1c.js                     16.34 kB │ gzip: 6.73 kB
.svelte-kit/output/client/_app/immutable/entry/start.8364f121.js                                   22.56 kB │ gzip: 9.02 kB
✓ built in 8.76s
[vite-plugin-sveltekit-compile] Cannot read properties of undefined (reading 'filter')
✓ built in 10.05s
error during build:
TypeError: Cannot read properties of undefined (reading 'filter')
    at Object.handler (file:///D:/OA/myapp1/node_modules/@sveltejs/kit/src/exports/vite/index.js:735:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async PluginDriver.hookParallel (file:///D:/OA/myapp1/node_modules/rollup/dist/es/shared/node-entry.js:24317:17)
    at async file:///D:/OA/myapp1/node_modules/rollup/dist/es/shared/node-entry.js:25678:13
    at async catchUnfinishedHookActions (file:///D:/OA/myapp1/node_modules/rollup/dist/es/shared/node-entry.js:24758:20)
    at async build (file:///D:/OA/myapp1/node_modules/vite/dist/node/chunks/dep-79892de8.js:46246:22)
    at async CAC.<anonymous> (file:///D:/OA/myapp1/node_modules/vite/dist/node/cli.js:813:9)

System Info

System:
    OS: Windows 10 10.0.22621
    CPU: (16) x64 AMD Ryzen 7 5800X3D 8-Core Processor
    Memory: 103.84 GB / 127.93 GB
  Binaries:
    Node: 19.5.0 - ~\scoop\apps\nodejs\current\node.EXE
    Yarn: 1.22.19 - ~\scoop\apps\nodejs\current\yarn.CMD
    npm: 9.5.1 - ~\scoop\apps\nodejs\current\bin\npm.CMD
  Browsers:
    Edge: Spartan (44.22621.1413.0), Chromium (111.0.1661.51)
    Internet Explorer: 11.0.22621.1
  npmPackages:
    @sveltejs/adapter-auto: ^2.0.0 => 2.0.0
    @sveltejs/kit: ^1.5.0 => 1.14.0
    svelte: ^3.54.0 => 3.57.0
    vite: ^4.2.0 => 4.2.1

Severity

annoyance

Additional Information

No response

dummdidumm commented 1 year ago

Likely fixed by parts of #6265

Tal500 commented 1 year ago

Likely fixed by parts of #6265

This PR totally "fixes" this😀

In more details: SvelteKit doesn't really support Vite plugin-legacy, in so many ways... The starting point it doesn't fit along, is that plugin-legacy duplicates the rollup outputs, one for legacy and one for modern, but SvelteKit assumes the output is only one.

wmurphyrd commented 5 months ago

In more details: SvelteKit doesn't really support Vite plugin-legacy, in so many ways... The starting point it doesn't fit along, is that plugin-legacy duplicates the rollup outputs, one for legacy and one for modern, but SvelteKit assumes the output is only one.

Thanks for this tip on where the issue lies. For my case I was able to resolve then by skipping those legacy chunks because what I really needed support for was the modern polyfills

    plugins: [
        sveltekit(),
        legacy({
            modernPolyfills: true,
            renderLegacyChunks: false
        })
    ],