Electron: ^2.0.2
Webpack: ^4.10.2
在其中一个渲染器进程中,我正在使用Electron的webview
,
<webview
src="www.google.com"
autosize
allowpopups
webpreferences="contextIsolation=yes, nativeWindowOpen=yes"
preload="someFile.js"
plugins>
</webview>
现在,在preload
文件中,我正在使用Electron的webFrame
创建一个Isolated Context
:
import { webFrame, ipcRenderer } from 'electron';
webFrame.executeJavaScriptInIsolatedWorld(
worldId,
[
{
code: code, // code in stringified form (contains usage of Node APIs)
url: url
}
]);
使用webpack
捆绑了预加载文件,这里是webpack configuration
:
const path = require('path');
const paths = require('./paths');
module.exports = {
mode: 'production',
entry: paths.bundleEntry,
output: {
path: path.join(paths.appRendererBuild, 'preloads'),
filename : 'bundleOutput.js'
},
target: 'electron-renderer'
};
我能够在Webview的隔离上下文中使用require('electron')
(由于Webview的属性webpreferences="contextIsolation=yes, nativeWindowOpen=yes"
而创建),但是我无法在使用webFrame.executeJavaScriptInIsolatedWorld
运行的代码中使用它
如何在webFrame的隔离上下文中使用Node的API(如require)?