[ERR_MODULE_NOT_FOUND] [ESM] Vite doesn't bundle internal dependencies
- Dominant language
- TypeScript
- Stars
- 7.1k
- Forks
- 641
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 30
Description
### Pre-flight checklist
- [X] I have read the [contribution documentation](https://github.com/electron/forge/blob/main/CONTRIBUTING.md) for this project.
- [X] I agree to follow the [code of conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) that this project uses.
- [X] I have searched the issue tracker for a bug that matches the one I want to file, without success.
### Electron Forge version
7.4.0 or 7.5.0
### Electron version
31.0.1 or 32.1.2
### Operating system
Windows 11
### Last known working Electron Forge version
_No response_
### Expected behavior
No error in console
### Actual behavior
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:
```ts
import { createRequire } from 'node:module'
const require = createRequire(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: [import.meta.dirname] })
app.quit()
} catch (error) {
// Ignore
console.log('Ignore error: ', error)
}
```
Console output:
```console
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:
```ts
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:
```console
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'
}
```
**Note**: I did a try with other _dependencies_ such as _react_ and _solid-js_ and I got same issue.
### Steps to reproduce
Repository: https://github.com/rtritto/template-electron-vite
Steps:
- `git clone https://github.com/rtritto/template-electron-vite.git`
- `cd template-electron-vite`
- `yarn`
- `yarn start`
### Additional information
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.