为什么Electron没有运行我的预加载脚本?
我试着用a来处理电子4.2.3中的a。但是,我无法运行预加载脚本。最小复制情况: package.json为什么Electron没有运行我的预加载脚本?,electron,Electron,我试着用a来处理电子4.2.3中的a。但是,我无法运行预加载脚本。最小复制情况: 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', f
{
"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')
})
window.preloadWasRun = 'preload was run'
preload.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')
})
window.preloadWasRun = 'preload was run'
index.html
<body>
<script>
document.write(window.preloadWasRun || 'preload was not run')
</script>
</body>
document.write(window.preloadWasRun | |'预加载未运行')
无论我对
webSecurity
、nodeIntegration
和contextIsolation
使用什么设置,我的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'),