Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
7 tasks done
Tanimodori opened this issue Feb 10, 2023 · 5 comments
Closed
7 tasks done
Labels
bug: upstream Bug in a dependency of Vite

Comments

@Tanimodori
Copy link

Tanimodori commented Feb 10, 2023

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 cawa-93/vite-electron-builder#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!
 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 (<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)

Validations

@Tanimodori
Copy link
Author

Workaround: set rollupOptions.preserveEntrySignatures to strict

@sapphi-red
Copy link
Member

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

@Tanimodori
Copy link
Author

@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
Copy link
Member

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

@sapphi-red sapphi-red closed this as not planned Won't fix, can't repro, duplicate, stale Mar 16, 2023
@Tanimodori
Copy link
Author

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

@github-actions github-actions bot locked and limited conversation to collaborators Apr 9, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug: upstream Bug in a dependency of Vite
Projects
None yet
Development

No branches or pull requests

2 participants