Skip to content

enable(webContents) not working in preload script #128

Open
@sindbad75

Description

@sindbad75

Hello everyone.
I am new on electron and trying to update an electron project from v11.5.0 to latest version (or at least last 17 sub version).
My setup:
"node": "14.16"
"@electron/remote": "^2.0.8",
"electron": "^12.0.0", (same issue with 13.6.9 or 17.3.1)

I am facing an issue trying to move from enableRemoteModule (in BrowserWindow's webPreferences) to enable(webContents).
Here it is about a notification windows which should be opened and display the right content.
I stay on electron 12.0.0/13.6.9 in order to switch easily from one to the other.

Before (enableRemoteModule)

main:

win = new BrowserWindow({
   ...
    webPreferences: {
      webviewTag: true,
      enableRemoteModule: true,
      nativeWindowOpen: true,
      contextIsolation: false,
      preload: ...,
    }
  });

preload

  const win = new remote.BrowserWindow({
    ...,
    webPreferences: {
      enableRemoteModule: true,
      contextIsolation: false,
      preload: ...,
    }
  });

After (enable)

main:

import * as remoteMain from '@electron/remote/main';
[...]

win = new BrowserWindow({
   ...
    webPreferences: {
      webviewTag: true,
      nativeWindowOpen: true,
      contextIsolation: false,
      preload: ...,
    }
  });

  remoteMain.enable(win.webContents)

preload:

  const win = new remote.BrowserWindow({
    ...,
    webPreferences: {
      enableRemoteModule: true,
      contextIsolation: false,
      preload: ...,
    }
  });

remote.require("@electron/remote/main").enable(win.webContents);

I probably miss something important.
In preload.js, with enableRemoteModule: true, every thing works fine, my notification window open and is filled up with its content. Using enable, my notification window open but nothing is displayed in it. I do not have any console warning or error.
In main, using enable seems to work.

I guess it could be related to an initialization issue.

I do not know if it could help but I noticed that remoteMain.enable(win.webContents) in main returns null and remote.require("@electron/remote/main").enable(win.webContents) returns undefined in preload even if both emoteMain.enable and remote.require("@electron/remote/main").enable return the same exact function.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions