Запросы API Electron + Vue приходятся на app://

Я создал приложение Vue и добавил в него Electron. Я использовал Vue CLI Plugin Electron Builder

В режиме разработки все нормально, все запросы к API падают на адрес который прописан у меня в vue.config.js:

proxy: {
        '^/api': {
            target: 'http://my-api:3000',
            changeOrigin: true
        },
    },

Например, запрос Axios POST /api/open_session/ сменяется http://my-api/api/open_session по мере необходимости.

Когда я создаю проект, он создает протокол app:// для открытия файла index.html.

Но он также делает все пути URL-адресов, начинающиеся с app://, включая запросы API.

Мой background.js:

if (process.env.WEBPACK_DEV_SERVER_URL) {
// Load the url of the dev server if in development mode
await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL)
if (!process.env.IS_TEST) win.webContents.openDevTools()
} 
else {
createProtocol('app');
// Load the index.html when not in development
win.loadURL('app://./index.html');
}

Я хочу, чтобы эти пути были направлены на мой API, а все мои файлы открывались как обычно (через протокол приложения)

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
579
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, это было долгое время, и я справился с этим самостоятельно. Однако вот ответ, который я нашел на некоторых форумах для тех, кто борется с той же проблемой:

Во-первых, я изменил свой vue.config.js:

proxy: {
        '^/api': {
            target: 'http://127.0.0.1:3000',
            changeOrigin: true
        },
    },

Затем я внес некоторые изменения в main.js — добавил переменную сеанса:

const sesh = session.defaultSession.webRequest.onBeforeSendHeaders({
 urls: ['*://*/*']
}, (details, callback) => {
// eslint-disable-next-line prefer-destructuring
details.requestHeaders.Host = details.url.split('://')[1].split('/')[0]
callback({
  requestHeaders: details.requestHeaders
})
})

который определяет поведение приложения при вызове запросов. Кроме того, я добавил значение сеанса в webPreferences:

const win = new BrowserWindow({
 width: 1500,
 height: 700,
 title: "Title",
 webPreferences: {
   session: sesh,
   nodeIntegration: true,
   webSecurity: false
 }
})

И, наконец, загрузите мой index.html через протокол приложения.

createProtocol('app');
win.loadURL('app://./index.html');

В результате все мои запросы были перенаправлены на мой сервер.

Простите меня за незнание исходника, если это читает автор кода, вы обязательно можете отметить себя в комментариях :)

Другие вопросы по теме