vitejs / vite

Next generation frontend tooling. It's fast!
http://vitejs.dev
MIT License
67.28k stars 6.05k forks source link

Failed to bundle in lib modes with preserveModules and noExternal when module has no export name #12012

Closed Tanimodori closed 1 year ago

Tanimodori commented 1 year ago

Describe the bug

I'm trying to bundle node scripts under ssr mode. I need to use some dependency that use native node modules so we have to set preserveModules to preserve the use of __dirname. I also need to externalize node builtins and electron builtins. This setup will fail when I try to build when rollup reads a module that have no export name (just barely export function).

The log stops at

node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator
Cannot read properties of undefined (reading '0')
error during build:
TypeError: Cannot read properties of undefined (reading '0')
    at Chunk.setDynamicImportResolutions (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:15902:296)
    at Chunk.renderModules (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:15819:14)
    at Chunk.render (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:15352:111)
    at file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:16722:72
    at Array.map (<anonymous>)
    at renderChunks (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:16722:53)
    at Bundle.generate (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:16935:19)
    at async file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:25159:27
    at async catchUnfinishedHookActions (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:24261:20)
    at async build (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/vite@4.1.1_@types+node@18.13.0/node_modules/vite/dist/node/chunks/dep-3007b26d.js:44650:22)
 ELIFECYCLE  Command failed with exit code 1.

Where the setDynamicImportResolutions is at rollup/src/Chunk.ts (permalink)

private setDynamicImportResolutions(fileName: string) {
        const { accessedGlobalsByScope, outputOptions, pluginDriver, snippets } = this;
        for (const resolvedDynamicImport of this.getIncludedDynamicImports()) {
            if (resolvedDynamicImport.chunk) {
                const { chunk, facadeChunk, node, resolution } = resolvedDynamicImport;
                if (chunk === this) {
                    node.setInternalResolution(resolution.namespace);
                } else {
                    node.setExternalResolution(
                        (facadeChunk || chunk).exportMode,
                        resolution,
                        outputOptions,
                        snippets,
                        pluginDriver,
                        accessedGlobalsByScope,
// THIS FOLLOWING LINE TRIGGERS THE ERROR
                        `'${(facadeChunk || chunk).getImportPath(fileName)}'`,
                        !facadeChunk?.strictFacade && chunk.exportNamesByVariable.get(resolution.namespace)![0],
                        null
                    );
                }
            } else {
                const { node, resolution } = resolvedDynamicImport;
                const [resolutionString, assertions] = this.getDynamicImportStringAndAssertions(
                    resolution,
                    fileName
                );
                node.setExternalResolution(
                    'external',
                    resolution,
                    outputOptions,
                    snippets,
                    pluginDriver,
                    accessedGlobalsByScope,
                    resolutionString,
                    false,
                    assertions
                );
            }
        }
    }

I found somewhere in Chunk.ts (permalink)

// Namespaces do not have an export name
variableModule.getExportNamesByVariable().get(variable)?.[0] || '*',

Is the assertion here that modules must have an export name wrong? I'm not expert on it, just guessing.

The yallist/iterator.js is as follows:

'use strict'
module.exports = function (Yallist) {
  Yallist.prototype[Symbol.iterator] = function* () {
    for (let walker = this.head; walker; walker = walker.next) {
      yield walker.value
    }
  }
}

There's no export name, just bare anonymous function as output.

Sorry I know this seems to be a pure rollup bug, but I cannot reproduce it using rollup. Vite surely add some configuration and plugins into rollup. So I ended up submit this issue here...

The use case of such a method is discussed at https://github.com/cawa-93/vite-electron-builder/pull/903 if anyone wonders.

Note that build.rollupOptions.output.entryFileNames is just used to show the current processing files. Removing it will not solve the bug. Removing build.rollupOptions.output.preserveModules will solve the bug but I need __dirname working so it's a not workaround.

Reproduction

https://github.com/Tanimodori/vite-electron-updater-repro

Steps to reproduce

  1. pnpm i
  2. pnpm build

System Info

System:
    OS: Windows 10 10.0.22621
    CPU: (8) x64 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
    Memory: 6.85 GB / 15.69 GB
  Binaries:
    Node: 16.16.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.19 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 9.4.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Spartan (44.22621.1105.0), Chromium (108.0.1462.76)
    Internet Explorer: 11.0.22621.1
  npmPackages:
    vite: ^4.1.0 => 4.1.1

Used Package Manager

pnpm

Logs

Click to expand! ```shell pnpm vite build --debug vite:config bundled config file loaded in 53.64ms +0ms vite:esbuild init tsconfck (root: D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR) +0ms vite:esbuild init tsconfck (root: D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR) +6ms vite:esbuild init tsconfck (root: D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR) +5ms vite:esbuild init tsconfck (root: D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR) +2ms vite:esbuild init tsconfck end +2ms vite:esbuild init tsconfck end +1ms vite:esbuild init tsconfck end +0ms vite:esbuild init tsconfck end +0ms vite:config using resolved config: { vite:config build: { vite:config target: [ 'es2020', 'edge88', 'firefox78', 'chrome87', 'safari14' ], vite:config cssTarget: [ 'es2020', 'edge88', 'firefox78', 'chrome87', 'safari14' ], vite:config outDir: 'dist', vite:config assetsDir: 'assets', vite:config assetsInlineLimit: 4096, vite:config cssCodeSplit: false, vite:config sourcemap: false, vite:config rollupOptions: { output: [Object], external: [Function: external] }, vite:config minify: false, vite:config terserOptions: {}, vite:config write: true, vite:config emptyOutDir: true, vite:config copyPublicDir: true, vite:config manifest: false, vite:config lib: { entry: 'src/index.ts', formats: [Array] }, vite:config ssr: true, vite:config ssrManifest: false, vite:config ssrEmitAssets: 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 ssr: { vite:config format: 'esm', vite:config target: 'node', vite:config noExternal: true, vite:config optimizeDeps: { disabled: true, esbuildOptions: [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:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/vite.config.ts', vite:config configFileDependencies: [ vite:config 'D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/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:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR', vite:config base: '/', vite:config rawBase: '/', 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] ] vite:config }, vite:config publicDir: 'D:\\Tanimodori\\Project\\__3RD__\\vite-electron-updater-repro@TMR\\public', vite:config cacheDir: 'D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.vite', vite:config command: 'build', vite:config mode: 'production', 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: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 error: [Function: error], vite:config clearScreen: [Function: clearScreen], vite:config hasErrorLogged: [Function: hasErrorLogged] 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: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 } +26ms vite v4.1.1 building SSR bundle for production... ✓ 352 modules transformed. src/index _virtual/main node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/main _virtual/main node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/index node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/AppUpdater node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/providers/Provider node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/AppImageUpdater node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/MacUpdater node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/NsisUpdater _virtual/Provider _virtual/index node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/CancellationToken node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/httpExecutor node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/publishOptions node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/rfc2253Parser node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/uuid node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/ProgressCallbackTransform node_modules/.pnpm/builder-util-runtime@9.1.1/node_modules/builder-util-runtime/out/xml _virtual/CancellationToken _virtual/publishOptions _virtual/rfc2253Parser _virtual/ProgressCallbackTransform _virtual/AppUpdater node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/index node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/index node_modules/.pnpm/lazy-val@1.0.5/node_modules/lazy-val/out/main node_modules/.pnpm/semver@7.3.8/node_modules/semver/index node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/DownloadedUpdateHelper node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/ElectronAppAdapter node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/electronHttpExecutor node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/providers/GenericProvider node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/providerFactory _virtual/index _virtual/main _virtual/DownloadedUpdateHelper _virtual/ElectronAppAdapter _virtual/electronHttpExecutor _virtual/GenericProvider _virtual/providerFactory node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/util _virtual/util _virtual/AppImageUpdater node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/BaseUpdater node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader _virtual/FileWithEmbeddedBlockMapDifferentialDownloader _virtual/MacUpdater _virtual/NsisUpdater node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/differentialDownloader/GenericDifferentialDownloader node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/windowsExecutableCodeSignatureVerifier _virtual/GenericDifferentialDownloader _virtual/windowsExecutableCodeSignatureVerifier node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/loader node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/dumper node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/failsafe node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/json node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/core node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/default node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/exception node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/binary node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/float node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/map node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/null node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/pairs node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/set node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/timestamp node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/bool node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/int node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/merge node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/omap node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/seq node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/str _virtual/core _virtual/loader _virtual/dumper node_modules/.pnpm/lodash.escaperegexp@4.1.2/node_modules/lodash.escaperegexp/index _virtual/httpExecutor node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/index _virtual/index _virtual/uuid _virtual/xml node_modules/.pnpm/sax@1.2.4/node_modules/sax/lib/sax _virtual/sax _virtual/BaseUpdater node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/differentialDownloader/DifferentialDownloader _virtual/DifferentialDownloader node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/fs/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/copy/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/empty/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/ensure/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/json/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/mkdirs/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/move/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/output-file/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/path-exists/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/remove/index _virtual/index node_modules/.pnpm/semver@7.3.8/node_modules/semver/internal/re node_modules/.pnpm/semver@7.3.8/node_modules/semver/internal/constants node_modules/.pnpm/semver@7.3.8/node_modules/semver/classes/semver node_modules/.pnpm/semver@7.3.8/node_modules/semver/internal/identifiers node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/parse node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/valid node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/clean node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/inc node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/diff node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/major node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/minor node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/patch node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/prerelease node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/compare node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/rcompare node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/compare-loose node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/compare-build node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/sort node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/rsort node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/gt node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/lt node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/eq node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/neq node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/gte node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/lte node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/cmp node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/coerce node_modules/.pnpm/semver@7.3.8/node_modules/semver/classes/comparator node_modules/.pnpm/semver@7.3.8/node_modules/semver/classes/range node_modules/.pnpm/semver@7.3.8/node_modules/semver/functions/satisfies node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/to-comparators node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/max-satisfying node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/min-satisfying node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/min-version node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/valid node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/outside node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/gtr node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/ltr node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/intersects node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/simplify node_modules/.pnpm/semver@7.3.8/node_modules/semver/ranges/subset _virtual/re node_modules/.pnpm/lodash.isequal@4.5.0/node_modules/lodash.isequal/index _virtual/index node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/AppAdapter _virtual/AppAdapter node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/providers/BitbucketProvider node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/providers/GitHubProvider node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/providers/KeygenProvider node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/providers/PrivateGitHubProvider _virtual/BitbucketProvider _virtual/GitHubProvider _virtual/KeygenProvider _virtual/PrivateGitHubProvider node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/node node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/common node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/snippet _virtual/common _virtual/_commonjsHelpers node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/differentialDownloader/DataSplitter node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/differentialDownloader/downloadPlanBuilder node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/differentialDownloader/multipleRangeDownloader node_modules/.pnpm/electron-updater@5.3.0/node_modules/electron-updater/out/differentialDownloader/ProgressDifferentialDownloadCallbackTransform _virtual/DataSplitter _virtual/downloadPlanBuilder _virtual/multipleRangeDownloader _virtual/ProgressDifferentialDownloadCallbackTransform node_modules/.pnpm/universalify@2.0.0/node_modules/universalify/index node_modules/.pnpm/graceful-fs@4.2.10/node_modules/graceful-fs/graceful-fs _virtual/index node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/copy/copy node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/copy/copy-sync node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/ensure/file node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/ensure/link node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/ensure/symlink node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/json/jsonfile node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/json/output-json node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/json/output-json-sync node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/mkdirs/make-dir _virtual/make-dir node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/move/move node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/move/move-sync node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/remove/rimraf node_modules/.pnpm/semver@7.3.8/node_modules/semver/internal/debug node_modules/.pnpm/semver@7.3.8/node_modules/semver/internal/parse-options node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index _virtual/browser node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common _virtual/node node_modules/.pnpm/graceful-fs@4.2.10/node_modules/graceful-fs/polyfills node_modules/.pnpm/graceful-fs@4.2.10/node_modules/graceful-fs/legacy-streams node_modules/.pnpm/graceful-fs@4.2.10/node_modules/graceful-fs/clone node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/util/utimes node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/util/stat node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/ensure/symlink-paths node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/ensure/symlink-type node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/index node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/utils node_modules/.pnpm/fs-extra@10.1.0/node_modules/fs-extra/lib/mkdirs/utils _virtual/utils node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist node_modules/.pnpm/ms@2.1.2/node_modules/ms/index node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator Cannot read properties of undefined (reading '0') error during build: TypeError: Cannot read properties of undefined (reading '0') at Chunk.setDynamicImportResolutions (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:15902:296) at Chunk.renderModules (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:15819:14) at Chunk.render (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:15352:111) at file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:16722:72 at Array.map () at renderChunks (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:16722:53) at Bundle.generate (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:16935:19) at async file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:25159:27 at async catchUnfinishedHookActions (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/rollup@3.15.0/node_modules/rollup/dist/es/shared/rollup.js:24261:20) at async build (file:///D:/Tanimodori/Project/__3RD__/vite-electron-updater-repro@TMR/node_modules/.pnpm/vite@4.1.1_@types+node@18.13.0/node_modules/vite/dist/node/chunks/dep-3007b26d.js:44650:22) ```

Validations

Tanimodori commented 1 year ago

Workaround: set rollupOptions.preserveEntrySignatures to strict

sapphi-red commented 1 year ago

@Tanimodori I made a reproduction without Vite. Please report to rollup. https://stackblitz.com/edit/rollup-repro-cch24i?file=package.json

Tanimodori commented 1 year ago

@sapphi-red Thanks for helping create a pure rollup reproduction! I've reported this issue to rollup and let's wait for its resolvent.

sapphi-red commented 1 year ago

I'll close this issue as I think it's unactionable on Vite side.

Tanimodori commented 1 year ago

This is fixed in rollup v3.20.0 so for vite it is v4.3.0-beta.0