Electron Forge's Webpack plugin errantly depends on node require
Pre-flight checklist
- [X] I have read the contribution documentation for this project.
- [X] I agree to follow the code of conduct 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
6.0.0-beta.61
Electron version
v16.0.0
Operating system
macOS 12.0.1
Last known working Electron Forge version
N/A
Expected behavior
Electron Forge should not depend on node's require unless both nodeIntegration: true and contextIsolation: false.
Actual behavior
Electron Forge throws an error in the dev-server when you attempt to use nodeIntegration as described here: https://www.electronforge.io/config/plugins/webpack#node-integration
You can work around this for the dev-server by adding target: ['web', 'electron-renderer'] to your renderer webpack config, but it doesn't fix It for production builds:
Steps to reproduce
- Create a new electron app using the typescript-webpack plugin.
npx create-electron-app my-new-app --template=typescript-webpack - Add
webPreferences: { nodeIntegration: true }to thenew BrowserWindowcall inindex.ts - Add
nodeIntegration: trueto the forge config in the package.json. - Start the new app, observe the error.
As mentioned above, you can work around this for the dev-server by adding target: ['web', 'electron-renderer'] to your renderer webpack config, but it doesn't fix It for production builds.
To fully fix this, you need to set contextIsolation: false in the new BrowserWindow call in index.ts which is not ideal.
Additional information
This may be a bug in vercel/webpack-asset-relocator-loader and not Electron Forge, but it should at least be documented.
Found this bug also. If someone does not want to open { nodeIntegration: true }, another workaround is to get the page url from ipcMain side by adding an ipcMain handle method to return the page urls.
but I think it is still a bug that needs to be fixed.
I also encountered this problem, is there any latest solution? Thanks.