gpt4 book ai didi

electron - 为什么Electron没有运行我的预加载脚本?

转载 作者:行者123 更新时间:2023-12-01 10:19:15 24 4
gpt4 key购买 nike

我正在尝试使用preload script来解决Electron 4.2.3中的CORS header issue。但是,我无法运行预加载脚本。最小复制情况:

package.json

{
"name": "your-app",
"version": "0.1.0",
"main": "main.js",
"dependencies": {
"electron": "^4.2.3"
}
}

main.js
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')
})

preload.js
window.preloadWasRun = 'preload was run'

index.html
<body>
<script>
document.write(window.preloadWasRun || 'preload was not run')
</script>
</body>

无论我对 webSecuritynodeIntegrationcontextIsolation使用什么设置,似乎我的 preload脚本都被忽略了。即使我在脚本中出现语法错误,也不会在任何地方显示任何错误。

最佳答案

原来,它必须是绝对路径名,而不是绝对URL。这些都不起作用:

      preload: `file://${__dirname}/preload.js`,
preload: './preload.js',
preload: 'preload.js',

但这工作如广告所示:
      preload: `${__dirname}/preload.js`,

由于它似乎是文件系统路径而不是URL,因此使用 path.join代替具有奇怪的路径分隔符的平台也可能是明智的:
      preload: path.join(__dirname, 'preload.js'),

关于electron - 为什么Electron没有运行我的预加载脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com