electron / electron/forge

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

Open
#3,644 9 comments 2 reactions 0 assignees View on GitHub
bug esm plugin/vite
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.