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

Web worker files without extension in symlinked packages fail to load during development as of version 4.3 #13141

Closed
7 tasks done
andrewcourtice opened this issue May 10, 2023 · 0 comments · Fixed by #13142
Closed
7 tasks done
Labels
p3-minor-bug An edge case that only affects very specific usage (priority) regression The issue only appears after a new release

Comments

@andrewcourtice
Copy link

andrewcourtice commented May 10, 2023

Describe the bug

When using raw symlinked packages via yarn workspaces Vite fails to load worker files that don't specify a file extension and instead returns a 404. All other files (including dynamic imports) in symlinked packages appear to be loading correctly.

This issue has only started since upgrading to v4.3.

See this comment for additional context in the lead up to this issue: #12931 (comment)

Reproduction

https://github.com/andrewcourtice/vite-4.3-bug

Steps to reproduce

  1. Open in a GitHub codespace or clone locally
  2. Run yarn install
  3. Run yarn start
  4. Open your browser devtools and go to the network tab
  5. Notice that the linked worker file fails to load with a 404 response
  6. Follow the instructions in the sample app to further demonstrate the issue.
  7. Add a .ts file extension to the URL constructor in the /packages/worker/src/index.ts file to see Vite correctly load the file.

System Info

### My local system info

  System:
    OS: macOS 13.3.1
    CPU: (10) arm64 Apple M1 Max
    Memory: 2.93 GB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.14.0 - ~/.nvm/versions/node/v18.14.0/bin/node
    Yarn: 3.4.1 - ~/.nvm/versions/node/v18.14.0/bin/yarn
    npm: 9.3.1 - ~/.nvm/versions/node/v18.14.0/bin/npm
  Browsers:
    Chrome: 113.0.5672.63
    Firefox: 109.0.1
    Safari: 16.4


### Codespace repro system info

  System:
    OS: Linux 5.4 Ubuntu 20.04.6 LTS (Focal Fossa)
    CPU: (2) x64 Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
    Memory: 1.33 GB / 3.84 GB
    Container: Yes
    Shell: 5.0.17 - /bin/bash
  Binaries:
    Node: 19.9.0 - ~/nvm/current/bin/node
    Yarn: 3.5.1 - /usr/bin/yarn
    npm: 9.6.3 - ~/nvm/current/bin/npm

Used Package Manager

yarn

Logs

Click to expand!
@andrewcourtice ➜ /workspaces/vite-4.3-bug (main) $ yarn start --debug
  vite:config bundled config file loaded in 411.55ms +0ms
  vite:config using resolved config: {
  vite:config   root: '/workspaces/vite-4.3-bug/app',
  vite:config   server: {
  vite:config     preTransformRequests: true,
  vite:config     port: 6565,
  vite:config     open: true,
  vite:config     host: true,
  vite:config     sourcemapIgnoreList: [Function: isInNodeModules],
  vite:config     middlewareMode: false,
  vite:config     fs: { strict: true, allow: [Array], deny: [Array] }
  vite:config   },
  vite:config   json: { stringify: true },
  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: [ 'vue' ],
  vite:config     preserveSymlinks: false,
  vite:config     alias: [ [Object], [Object], [Object] ]
  vite:config   },
  vite:config   define: { __VUE_OPTIONS_API__: false, __VUE_PROD_DEVTOOLS__: false },
  vite:config   worker: {
  vite:config     format: 'es',
  vite:config     plugins: [
  vite:config       'vite:optimized-deps',
  vite:config       'vite:watch-package-data',
  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:worker-import-meta-url',
  vite:config       'vite:asset-import-meta-url',
  vite:config       'vite:dynamic-import-vars',
  vite:config       'vite:import-glob',
  vite:config       'vite:client-inject',
  vite:config       'vite:import-analysis'
  vite:config     ],
  vite:config     rollupOptions: {},
  vite:config     getSortedPlugins: [Function: getSortedPlugins],
  vite:config     getSortedPluginHooks: [Function: getSortedPluginHooks]
  vite:config   },
  vite:config   optimizeDeps: {
  vite:config     disabled: 'build',
  vite:config     force: true,
  vite:config     esbuildOptions: { preserveSymlinks: false }
  vite:config   },
  vite:config   plugins: [
  vite:config     'vite:optimized-deps',
  vite:config     'vite:watch-package-data',
  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:vue',
  vite:config     'vite:wasm-fallback',
  vite:config     'vite:define',
  vite:config     'vite:css-post',
  vite:config     'vite:worker-import-meta-url',
  vite:config     'vite:asset-import-meta-url',
  vite:config     'vite:dynamic-import-vars',
  vite:config     'vite:import-glob',
  vite:config     'vite:client-inject',
  vite:config     'vite:import-analysis'
  vite:config   ],
  vite:config   ssr: {
  vite:config     format: 'esm',
  vite:config     target: 'node',
  vite:config     external: [],
  vite:config     optimizeDeps: { disabled: true, esbuildOptions: [Object] }
  vite:config   },
  vite:config   configFile: '/workspaces/vite-4.3-bug/app/vite.config.ts',
  vite:config   configFileDependencies: [ '/workspaces/vite-4.3-bug/app/vite.config.ts' ],
  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     server: {}
  vite:config   },
  vite:config   base: '/',
  vite:config   rawBase: '/',
  vite:config   publicDir: '/workspaces/vite-4.3-bug/app/public',
  vite:config   cacheDir: '/workspaces/vite-4.3-bug/app/node_modules/.vite',
  vite:config   command: 'serve',
  vite:config   mode: 'development',
  vite:config   isWorker: false,
  vite:config   mainConfig: null,
  vite:config   isProduction: false,
  vite:config   esbuild: { jsxDev: true },
  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: true,
  vite:config     sourcemap: false,
  vite:config     rollupOptions: {},
  vite:config     minify: 'esbuild',
  vite:config     terserOptions: {},
  vite:config     write: true,
  vite:config     emptyOutDir: null,
  vite:config     copyPublicDir: true,
  vite:config     manifest: false,
  vite:config     lib: false,
  vite:config     ssr: false,
  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     cssMinify: true
  vite:config   },
  vite:config   preview: {
  vite:config     port: undefined,
  vite:config     strictPort: undefined,
  vite:config     host: true,
  vite:config     https: undefined,
  vite:config     open: true,
  vite:config     proxy: undefined,
  vite:config     cors: undefined,
  vite:config     headers: undefined
  vite:config   },
  vite:config   envDir: '/workspaces/vite-4.3-bug/app',
  vite:config   env: { BASE_URL: '/', MODE: 'development', DEV: true, PROD: false },
  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(1) {
  vite:config     'fnpd_/workspaces/vite-4.3-bug/app' => {
  vite:config       dir: '/workspaces/vite-4.3-bug/app',
  vite:config       data: [Object],
  vite:config       hasSideEffects: [Function: hasSideEffects],
  vite:config       webResolvedImports: {},
  vite:config       nodeResolvedImports: {},
  vite:config       setResolvedCache: [Function: setResolvedCache],
  vite:config       getResolvedCache: [Function: getResolvedCache]
  vite:config     },
  vite:config     set: [Function (anonymous)]
  vite:config   },
  vite:config   createResolver: [Function: createResolver],
  vite:config   appType: 'spa',
  vite:config   experimental: { importGlobRestoreExtension: false, hmrPartialAccept: false },
  vite:config   getSortedPlugins: [Function: getSortedPlugins],
  vite:config   getSortedPluginHooks: [Function: getSortedPluginHooks]
  vite:config } +9ms
Forced re-optimization of dependencies
  vite:esbuild 374.30ms tsconfck init /workspaces/vite-4.3-bug +0ms
  vite:deps scanning for dependencies... +0ms

  VITE v4.3.5  ready in 1056 ms

  ➜  Local:   http://localhost:6565/
  ➜  Network: http://172.16.5.4:6565/
  ➜  press h to show help
  vite:deps Crawling dependencies using entries: 
  vite:deps   /workspaces/vite-4.3-bug/app/index.html +0ms
  vite:resolve 0.58ms /src/index.ts -> /workspaces/vite-4.3-bug/app/src/index.ts +0ms
  vite:resolve 0.92ms ./app.vue -> /workspaces/vite-4.3-bug/app/src/app.vue +7ms
  vite:resolve 1.83ms vue -> /workspaces/vite-4.3-bug/node_modules/vue/dist/vue.runtime.esm-bundler.js +7ms
  vite:resolve 0.64ms /workspaces/vite-4.3-bug/app/src/worker -> /workspaces/vite-4.3-bug/app/src/worker/index.ts +21ms
  vite:resolve 5.83ms ~/worker -> /workspaces/vite-4.3-bug/app/src/worker/index.ts +5ms
  vite:resolve 2.27ms @vue-vite-starter/worker -> /workspaces/vite-4.3-bug/packages/worker/src/index.ts +7ms
  vite:deps Scan completed in 121.55ms: 
  vite:deps   vue -> /workspaces/vite-4.3-bug/node_modules/vue/dist/vue.runtime.esm-bundler.js +76ms
  vite:resolve 1.22ms @vue/runtime-dom -> /workspaces/vite-4.3-bug/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js +0ms
  vite:resolve 0.65ms @vue/runtime-core -> /workspaces/vite-4.3-bug/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +28ms
  vite:resolve 0.67ms @vue/shared -> /workspaces/vite-4.3-bug/node_modules/@vue/shared/dist/shared.esm-bundler.js +2ms
  vite:resolve 3.78ms @vue/reactivity -> /workspaces/vite-4.3-bug/node_modules/@vue/runtime-core/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js +82ms
  vite:deps Dependencies bundled in 229.99ms +0ms
  vite:html-fallback Rewriting GET / to /index.html +0ms
  vite:resolve 1.54ms /src/index.ts -> /workspaces/vite-4.3-bug/app/src/index.ts +0ms
  vite:time 41.98ms /index.html +0ms
  vite:load 10.56ms [fs] /src/index.ts +0ms
  vite:resolve 0.32ms ./styles/index.scss -> /workspaces/vite-4.3-bug/app/src/styles/index.scss +23ms
  vite:resolve 0.40ms ./app.vue -> /workspaces/vite-4.3-bug/app/src/app.vue +0ms
  vite:resolve 1.10ms vue -> /workspaces/vite-4.3-bug/app/node_modules/.vite/deps/vue.js?v=5cdda90f +1ms
  vite:import-analysis 4.13ms [3 imports rewritten] src/index.ts +0ms
  vite:transform 11.16ms /src/index.ts +0ms
  vite:load 2.46ms [fs] /src/styles/index.scss +14ms
  vite:resolve 3.71ms flex-layout-attribute -> /workspaces/vite-4.3-bug/node_modules/flex-layout-attribute/css/flex-layout-attribute.min.css +0ms
  vite:load 284.52ms [fs] /src/app.vue +282ms
  vite:resolve 0.57ms /workspaces/vite-4.3-bug/app/src/worker -> /workspaces/vite-4.3-bug/app/src/worker/index.ts +449ms
  vite:resolve 2.29ms @vue-vite-starter/worker -> /workspaces/vite-4.3-bug/packages/worker/src/index.ts +1ms
  vite:resolve 3.46ms ~/worker -> /workspaces/vite-4.3-bug/app/src/worker/index.ts +1ms
  vite:hmr [self-accepts] src/app.vue +0ms
  vite:load 1.98ms [plugin] /src/app.vue?vue&type=style&index=0&lang.scss +170ms
  vite:import-analysis 9.46ms [5 imports rewritten] src/app.vue +454ms
  vite:load 2.95ms [plugin] plugin-vue:export-helper +2ms
  vite:transform 172.51ms /src/app.vue +455ms
  vite:import-analysis 0.07ms [no imports] plugin-vue:export-helper +7ms
  vite:transform 0.73ms plugin-vue:export-helper +7ms
  vite:load 17.23ms [fs] ../packages/worker/src/index.ts +14ms
  vite:load 19.83ms [fs] /src/worker/index.ts +3ms
  vite:hmr [self-accepts] src/app.vue?vue&type=style&index=0&lang.scss +33ms
  vite:import-analysis 0.93ms [0 imports rewritten] src/app.vue?vue&type=style&index=0&lang.scss +24ms
  vite:transform 31.88ms /src/app.vue?vue&type=style&index=0&lang.scss +24ms
  vite:import-analysis 0.06ms [no imports] src/worker/index.ts +8ms
  vite:transform 23.49ms /src/worker/index.ts +10ms
  vite:hmr [self-accepts] src/styles/index.scss +36ms
  vite:import-analysis 2.56ms [0 imports rewritten] src/styles/index.scss +28ms
  vite:transform 520.45ms /src/styles/index.scss +25ms
  vite:import-analysis 0.22ms [no imports] /workspaces/vite-4.3-bug/packages/worker/src/index.ts +15ms
  vite:transform 66.27ms ../packages/worker/src/index.ts +16ms
  vite:cache [memory] /src/index.ts +0ms
  vite:time 0.59ms /src/index.ts +567ms
  vite:resolve 0.74ms /@vite/client -> /workspaces/vite-4.3-bug/node_modules/vite/dist/client/client.mjs +95ms
  vite:load 0.41ms [fs] /@vite/client +72ms
  vite:resolve 0.08ms @vite/env -> /workspaces/vite-4.3-bug/node_modules/vite/dist/client/env.mjs +4ms
  vite:import-analysis 0.92ms [1 imports rewritten] /workspaces/vite-4.3-bug/node_modules/vite/dist/client/client.mjs +11ms
  vite:transform 1.28ms /@vite/client +10ms
  vite:time 5.49ms /@vite/client +7ms
  vite:load 1.62ms [fs] ../node_modules/vite/dist/client/env.mjs +5ms
  vite:import-analysis 0.03ms [no imports] /workspaces/vite-4.3-bug/node_modules/vite/dist/client/env.mjs +3ms
  vite:transform 0.25ms ../node_modules/vite/dist/client/env.mjs +3ms
  vite:deps ✨ static imports crawl ended +2s
  vite:deps ✨ using post-scan optimizer result, the scanner found every used dependency +0ms
  vite:optimize-deps load /workspaces/vite-4.3-bug/app/node_modules/.vite/deps/vue.js +0ms
  vite:deps ✨ dependencies optimized +2ms
  vite:load 605.83ms [plugin] /node_modules/.vite/deps/vue.js?v=5cdda90f +55ms
  vite:import-analysis 4.86ms [no imports] node_modules/.vite/deps/vue.js?v=5cdda90f +61ms
  vite:transform 6.86ms /node_modules/.vite/deps/vue.js?v=5cdda90f +61ms
  vite:cache [304] /src/styles/index.scss +0ms
  vite:time 7.83ms /src/styles/index.scss +246ms
  vite:cache [304] ../node_modules/vite/dist/client/env.mjs +1ms
  vite:time 0.24ms ../node_modules/vite/dist/client/env.mjs +1ms
  vite:cache [memory] /node_modules/.vite/deps/vue.js?v=5cdda90f +736ms
  vite:time 1.30ms /node_modules/.vite/deps/vue.js?v=5cdda90f +482ms
  vite:cache [memory] /src/app.vue +2ms
  vite:time 2.44ms /src/app.vue +4ms
  vite:cache [304] plugin-vue:export-helper +960ms
  vite:time 0.39ms /@id/__x00__plugin-vue:export-helper +474ms
  vite:cache [304] /src/app.vue?vue&type=style&index=0&lang.scss +2ms
  vite:time 1.05ms /src/app.vue?vue&type=style&index=0&lang.scss +2ms
  vite:cache [304] ../packages/worker/src/index.ts +1ms
  vite:time 3.16ms ../packages/worker/src/index.ts +4ms
  vite:cache [304] /src/worker/index.ts +4ms
  vite:time 0.30ms /src/worker/index.ts +1ms
  vite:resolve 0.22ms /src/worker/worker?type=module&worker_file -> /workspaces/vite-4.3-bug/app/src/worker/worker.ts?type=module&worker_file +1s
  vite:html-fallback Not rewriting GET /workspaces%2Fvite-4.3-bug%2Fpackages%2Fworker%2Fsrc%2Fworker?type=module&worker_file because the path includes a dot (.) character. +2s
  vite:time 3.02ms /workspaces%2Fvite-4.3-bug%2Fpackages%2Fworker%2Fsrc%2Fworker?type=module&worker_file +271ms
  vite:load 5.23ms [fs] /src/worker/worker?type=module&worker_file +1s
  vite:resolve 0.06ms /@vite/env -> /workspaces/vite-4.3-bug/node_modules/vite/dist/client/env.mjs +9ms
  vite:cache [memory] ../node_modules/vite/dist/client/env.mjs +761ms
  vite:import-analysis 0.77ms [1 imports rewritten] src/worker/worker.ts?type=module&worker_file +1s
  vite:transform 3.39ms /src/worker/worker?type=module&worker_file +1s
  vite:time 10.53ms /src/worker/worker?type=module&worker_file +9ms
  vite:cache [304] ../node_modules/vite/dist/client/env.mjs +523ms
  vite:time 1.09ms ../node_modules/vite/dist/client/env.mjs +244ms
  vite:time 8.51ms /node_modules/.vite/deps/vue.js.map +3s

Note in particular these 2 lines towards the end of the log output:

  vite:resolve 0.22ms /src/worker/worker?type=module&worker_file -> /workspaces/vite-4.3-bug/app/src/worker/worker.ts?type=module&worker_file +1s
  vite:html-fallback Not rewriting GET /workspaces%2Fvite-4.3-bug%2Fpackages%2Fworker%2Fsrc%2Fworker?type=module&worker_file because the path includes a dot (.) character. +2s

Validations

@sapphi-red sapphi-red added p3-minor-bug An edge case that only affects very specific usage (priority) regression The issue only appears after a new release labels May 10, 2023
@github-actions github-actions bot locked and limited conversation to collaborators May 25, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
p3-minor-bug An edge case that only affects very specific usage (priority) regression The issue only appears after a new release
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants