electron / forge

:electron: A complete tool for building and publishing Electron applications
https://electronforge.io
MIT License
6.41k stars 505 forks source link

Electron Forge's Webpack plugin errantly depends on node require #2618

Open MynockSpit opened 2 years ago

MynockSpit commented 2 years ago

Pre-flight checklist

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:

Screen Shot 2021-11-19 at 11 50 22 AM Screen Shot 2021-11-19 at 11 50 36 AM

Steps to reproduce

  1. Create a new electron app using the typescript-webpack plugin. npx create-electron-app my-new-app --template=typescript-webpack
  2. Add webPreferences: { nodeIntegration: true } to the new BrowserWindow call in index.ts
  3. Add nodeIntegration: true to the forge config in the package.json.
  4. 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.

RoyYangS commented 2 years ago

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.

iCyris commented 1 year ago

I also encountered this problem, is there any latest solution? Thanks.