Запускать не встроенный JS локально в Electron - PullRequest
2 голосов
/ 04 октября 2019

Я бы хотел поместить все свои отдельные JS-скрипты в файлы в другую папку при локальной разработке. Единственный способ, которым я смог сделать это, - это если я не объявляю оператор meta. Однако, не объявляя его, я, конечно, получаю предупреждение.

Предупреждение об электронной безопасности (Insecure Content-Security-Policy) Этот процесс рендерера либо не имеет установленной политики безопасности содержимого, либо политики с "unsafe"-eval "включен. Это подвергает пользователей этого приложения ненужным рискам безопасности.

Есть ли способ сделать это локально, не игнорируя и не нарушая CSP?

1 Ответ

2 голосов
/ 05 октября 2019

Установите следующий метатег в средствах визуализации.

<meta http-equiv="Content-Security-Policy" content="script-src 'nonce-xxx or sha256-yyy' " />

Пожалуйста, проверьте мой репозиторий Github Electron-Renderer-CSP-sample , содержащий образцы для методов nonce и SHA для внутреннихи внешние js-файлы.

ИЛИ

Вы можете использовать аргумент предварительной загрузки в webPreferences при создании основного BrowserWindow. В main.js,

  mainWindow = new BrowserWindow({
    webPreferences: {
      nodeIntegration: false,
      preload: path.join(__dirname, 'preload.js')
    }
  })

В preload.js

        const remote = require("electron").remote;
// electron APIs
        window.appQuit = function() {
          remote.app.exit(0);
        };
// node modules
       window.notify= function notify(msg) {
       return require('node-notifier').notify(msg);
       };
// DOM can be manipulated from here (Refer 
// https://github.com/electron/electron-quick-start/blob/master/preload.js)
...