【问题标题】:Why is Electron not running my preload script?为什么 Electron 没有运行我的预加载脚本?
【发布时间】:2019-06-04 22:31:06
【问题描述】:

我正在尝试使用 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"
  }
}

ma​​in.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 脚本似乎都被忽略了。即使我在脚本中出现语法错误,它也不会在任何地方显示任何错误。

【问题讨论】:

    标签: electron


    【解决方案1】:

    原来它必须是绝对路径名,而不是绝对 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'),
    

    【讨论】:

      猜你喜欢
      • 2010-09-05
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2019-10-21
      • 2022-12-02
      • 2022-11-30
      • 1970-01-01
      相关资源
      最近更新 更多