我正在尝试使用预加载脚本来解决Electron 4.2.3 中的CORS 标头问题。但是,我无法运行预加载脚本。一个最小的复制案例:
包.json
{
"name": "your-app",
"version": "0.1.0",
"main": "main.js",
"dependencies": {
"electron": "^4.2.3"
}
}
Run Code Online (Sandbox Code Playgroud)
主文件
const { app, BrowserWindow } = require('electron')
app.on('ready', function() {
const win = new BrowserWindow({
webPreferences: {
preload: `file://${__dirname}/preload.js`,
}
})
win.webContents.openDevTools()
win.loadFile('index.html')
})
Run Code Online (Sandbox Code Playgroud)
预加载.js
window.preloadWasRun = 'preload was run'
Run Code Online (Sandbox Code Playgroud)
索引.html
<body>
<script>
document.write(window.preloadWasRun || 'preload was not run')
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
无论我对webSecurity,nodeIntegration和使用什么设置contextIsolation,似乎我的preload脚本都被忽略了。即使我在脚本中犯了语法错误,它也不会在任何地方显示任何错误。
Tho*_*mas 17
原来它必须是绝对路径名,而不是绝对 URL。这些都不起作用:
preload: `file://${__dirname}/preload.js`,
preload: './preload.js',
preload: 'preload.js',
Run Code Online (Sandbox Code Playgroud)
但这就像宣传的那样:
preload: `${__dirname}/preload.js`,
Run Code Online (Sandbox Code Playgroud)
由于它似乎是一个文件系统路径而不是 URL,因此使用它也可能是明智的path.join,以解决具有奇怪路径分隔符的平台:
preload: path.join(__dirname, 'preload.js'),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5666 次 |
| 最近记录: |