使用create-react-app base时,仅支持Electron Webview仅预加载file://协议

时间:2018-12-27 00:33:51

标签: javascript node.js reactjs webpack electron

Electron V3.0.5

您好,我有一个使用Electron和create-react-app的项目,但无法让我的项目找到预加载脚本。

这是webview标记:

<webview preload={`./Injects/preload.js`} />

当我使用如图所示的标记时,控制台会告诉我必须使用file:协议。所以我尝试了:

<webview preload={`file://${__dirname}/Injects/preload.js`} />

但是,当然,这使我进入了其中没有Injects / preload.js的.asar打包文件的路径。

我还尝试将注入脚本放入公用文件夹中并使用

<webview preload={`${process.env.PUBLIC_URL}/Injects/preload.js`} />

<webview preload={`file://${process.env.PUBLIC_URL}/Injects/preload.js`} />

但是我只遇到相同的错误,而且process.env.PUBLIC_URL仍然返回“”。

任何帮助将不胜感激,我无法在任何地方找到该问题的答案。

2 个答案:

答案 0 :(得分:1)

let path = `file:${require('path').resolve(__static, './preload.js')}`

我将preload.js放在电子项目的static文件夹中,它对我有用

答案 1 :(得分:0)

为解决该问题,我根据__dirname创建了一个__static变量,该变量根据生产或开发版本而更改了位置。