Создайте приложение Electron с помощью Ionic v5 с помощью @capacitor-сообщество/electron

#ionic-framework #electron #capacitor #electron-builder #ionic5

Вопрос:

На прошлой неделе я столкнулся со следующей проблемой — я хотел скомпилировать свой проект Ionic не только в версию Android, но и в настольное приложение electron. Но каждый раз, когда я развертываю электронную версию, у меня появляется белый экран.

Как воспроизвести проблему:

 # i create simple angular app
ionic start example-app tabs --type angular 
cd example-app
# i add @capacitor-community version of electron, since the original electron is deprecated
npm i @capacitor-community/electron
# required to get a www folder
ionic build
# add electron folder to project
npx cap add @capacitor-community/electron
# now we work inside electron project...
cd electron
# we can build project
npm run build
# we can start live project
npm run electron:start-live
# and now we have crash - just a blank white window
npm run electron:pack
 

Ответ №1:

Мне удалось получить видимое окно в развернутой версии, внеся следующее изменение в ./electron/src/setup.ts файл. Вам нужно найти следующий фрагмент:

 // Set a CSP up for our application based on the custom scheme
export function setupContentSecurityPolicy(customScheme: string): void {
  session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
    callback({
      responseHeaders: {
        ...details.responseHeaders,
        'Content-Security-Policy': [
          electronIsDev
            ? `default-src ${customScheme}://* 'unsafe-inline' devtools://* 'unsafe-eval' data:`
            : `default-src ${customScheme}://* 'unsafe-inline' data:`,
        ],
      },
    });
  });
}
 

и измените его на:

 // Set a CSP up for our application based on the custom scheme
export function setupContentSecurityPolicy(customScheme: string): void {
  session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
    callback({
      responseHeaders: {
        ...details.responseHeaders,
        'Content-Security-Policy': [
             `default-src ${customScheme}://* 'unsafe-inline' devtools://* 'unsafe-eval' data:`
        ],
      },
    });
  });
}