Почему Electron не запускает мой сценарий предварительной загрузки? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь использовать сценарий предварительной загрузки , чтобы обойти проблему CORS заголовка в Electron 4.2.3.Однако я не могу запустить скрипт предварительной загрузки.Минимальный случай воспроизведения:

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>

Независимо от того, какие настройки я использую для webSecurity, nodeIntegration и contextIsolation, похоже, мой preload скрипт просто игнорируется.Даже если я сделаю синтаксическую ошибку в скрипте, она нигде не будет отображаться.

1 Ответ

2 голосов
/ 04 июня 2019

Оказывается, это должен быть абсолютный путь, а не абсолютный URL.Ничего из этого не работает:

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

Но это работает так, как рекламируется:

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

Поскольку это скорее путь к файловой системе, чем URL, его также можно использовать *Вместо 1007 *, чтобы учесть платформы с странными разделителями пути:

      preload: path.join(__dirname, 'preload.js'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...