electron / electron/remote

enable(webContents) not working in preload script

Open
#128 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
411
Forks
53
Avg merge
3m
Merged PRs (30d)
1

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.