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

[ERR_MODULE_NOT_FOUND] [ESM] Vite doesn't bundle internal dependencies #17500

Open
7 tasks done
rtritto opened this issue Jun 17, 2024 · 2 comments
Open
7 tasks done

[ERR_MODULE_NOT_FOUND] [ESM] Vite doesn't bundle internal dependencies #17500

rtritto opened this issue Jun 17, 2024 · 2 comments

Comments

@rtritto
Copy link

rtritto commented Jun 17, 2024

Describe the bug

With ESM, the electron-squirrel-startup dependency can't be found if it's in dependencies (it works if I move it into devDependencies):

  • require.resolve (Node < 20.6.0) example; src/main.ts file:

    import { createRequire } from 'node:module'
    import { fileURLToPath } from 'node:url'
    
    const require = createRequire(import.meta.url)
    const __dirname = path.dirname(fileURLToPath(import.meta.url))
    
    try {
      // Handle creating/removing shortcuts on Windows when installing/uninstalling.
      require.resolve('electron-squirrel-startup/package.json')
      // OR require.resolve('electron-squirrel-startup/package.json', { paths: [__dirname] })
      app.quit()
    } catch (error) {
      // Ignore
      console.log('Ignore error: ', error)
    }

    Console output:

      Ignore error:  Error: Cannot find module 'electron-squirrel-startup/package.json'
      Require stack:
      - C:\template-electron-vite\.vite\build\main.js
          at Module._resolveFilename (node:internal/modules/cjs/loader:1152:15)
          at s._resolveFilename (node:electron/js2c/browser_init:2:120699)
          at Function.resolve (node:internal/modules/helpers:190:19)
          at file:///C:/template-electron-vite/.vite/build/main.js:8:12
          at ModuleJob.run (node:internal/modules/esm/module_job:222:25)
          at async ModuleLoader.import (node:internal/modules/esm/loader:316:24)
          at async loadApplicationPackage (file:///C:/template-electron-vite/.yarn/unplugged/electron-npm-31.0.0-df97707901/node_modules/electron/dist/resources/default_app.asar/main.js:129:9)
          at async file:///C:/template-electron-vite/.yarn/unplugged/electron-npm-31.0.0-df97707901/node_modules/electron/dist/resources/default_app.asar/main.js:241:9 {    
        code: 'MODULE_NOT_FOUND',
        requireStack: [ 'C:\\template-electron-vite\\.vite\\build\\main.js' ]
      }
  • import.meta.resolve (Node.js >= 20.6.0) example; src/main.ts file:

    try {
      // Handle creating/removing shortcuts on Windows when installing/uninstalling.
      import.meta.resolve('electron-squirrel-startup/package.json')
      app.quit()
    } catch (error) {
      // Ignore
      console.log('Ignore error: ', error)
    }

    Console output:

    Ignore error:  Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'electron-squirrel-startup' imported from C:\template-electron-vite\.vite\build\main.js
        at packageResolve (node:internal/modules/esm/resolve:861:9)
        at moduleResolve (node:internal/modules/esm/resolve:934:18)
        at defaultResolve (node:internal/modules/esm/resolve:1164:11)
        at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:383:12)
        at ModuleLoader.resolveSync (node:internal/modules/esm/loader:365:17)
        at Object.resolve (node:internal/modules/esm/initialize_import_meta:30:25)
        at file:///C:/template-electron-vite/.vite/build/main.js:6:15
        at ModuleJob.run (node:internal/modules/esm/module_job:222:25)
        at async ModuleLoader.import (node:internal/modules/esm/loader:316:24)
        at async loadApplicationPackage (file:///C:/template-electron-vite/.yarn/unplugged/electron-npm-31.0.0-df97707901/node_modules/electron/dist/resources/default_app.asar/main.js:129:9) {
      code: 'ERR_MODULE_NOT_FOUND'
    }

I did a try with other dependencies such as react and solid-js.

Stack

Electron Forge + Electron + Vite + ESM + Plug'n'Play (PnP) + Typescript

Reproduction

https://github.com/rtritto/template-electron-vite

Steps to reproduce

  • git clone https://github.com/rtritto/template-electron-vite.git
  • cd template-electron-vite
  • yarn
  • yarn start

System Info

System:
    OS: Windows 11
  Binaries:
    Node: 20.11.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 4.3.0 - C:\Program Files\nodejs\yarn.CMD
    npm: 10.2.4 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Chromium 126
    Internet Explorer: 11

Used Package Manager

yarn

Logs

No response

Validations

@rtritto rtritto changed the title [ERR_MODULE_NOT_FOUND] Dependencies ignored in build [ERR_MODULE_NOT_FOUND] Vite does not bundle dependencies Jun 17, 2024
@rtritto rtritto changed the title [ERR_MODULE_NOT_FOUND] Vite does not bundle dependencies [ERR_MODULE_NOT_FOUND] [ESM] Vite doesn't bundle internal dependencies Jun 17, 2024
@rtritto
Copy link
Author

rtritto commented Jun 17, 2024

FYI @merceyz

@bluwy
Copy link
Member

bluwy commented Jul 23, 2024

Is this specific to the electron setup? It feels like it has different requirements for dependency handling, which Vite doesn't have an opinion about. I think you should report this upstream.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants