Вызывается Axios Catch, даже если ответ 200 (Успешно)
Я использую приложение Electron Vue с Axios для HTTP-звонков на мой сервер Laravel. Все было прекрасно в режиме Dev от Electron. Но как только я собрал приложение Electron и установил его на клиентский компьютер, весь хаос разразился. Я исправляю некоторые проблемы, но эта проблема убьет меня.
Проще говоря, даже если все Axios возвращаются успешно, они выдают ошибку, которую я вставил в.catch(). Я, честно говоря, очень запутался, как это вообще возможно. Например, когда моя программа загружается, она делает несколько звонков, чтобы получить необходимую информацию. Выдает ошибку и отображает предупреждение. Я полагаю, это был только мой сервер Laravel. Но данные были успешно получены и добавлены в приложение.
axios.post(`${this.$store.state.URL}/get_server_ticket_from_table?api=${this.$store.state.API}`, {
id: this.ServerTicketMove.Server1.id,
table: this.ServerTicketMove.currentTable
})
.then((response) => {
console.log(response)
if (typeof response.data.id != 'undefined') {
this.ServerTicketMove.ticket = response.data
}
})
.catch(() => {
alert('Did not get Servers Table Information. Cant Connect to Main Server.')
})
Я немного погуглил и увидел несколько сообщений о CORS. Так что я прошел и включил это на своем веб-сервере и в Laravel. Это сделало больше беспорядка. Та же ошибка, но на этот раз данные не были применены ни к чему. Так что.then() даже не вызывается. Вдобавок к этому с включенным CORS мой Axios, кажется, делает дополнительный HTTP-вызов с методом запроса OPTIONS. Зачем? Я не думаю, что CORS является ответом на мою проблему.
Также внутри моего Electron Vue background.js я снова включил веб-безопасность. Который был выключен из-за развития. Который ничего не изменил.
win = new BrowserWindow({
width: 275,
height: 640,
title: 'title',
// webPreferences: { webSecurity: false }
})
Кто-нибудь знает, что происходит?
РЕДАКТИРОВАТЬ - 1-14-2019
После обнаружения ошибки "регенератор не определен" я думаю, что это проблема Вавилона. Я следил за всем https://babeljs.io/docs/en/babel-polyfill/ и я все еще получаю "регенератор Runtime не определен". Есть ли что-нибудь, что Babel + Axios + Electron + Await/Sync работает без ошибок? Лично я хотел бы не просто игнорировать "регенератор не определено время", а найти возможное решение этой проблемы, если это возможно. Любой вклад или вещи для меня будут оценены!
1 ответ
После долгих поисков я понял, что мне просто не хватает зависимостей в моем package.json. Несмотря на то, что они были необходимы в папке node_modules, они не были перечислены как зависимости в моей программе.
Работа над моей производственной сборкой Electron + Vue + Axios + Sync/Await
npm install --save @babel/runtime
npm install --save-dev @babel/plugin-transform-runtime
И в.babelrc добавьте:
{
"presets": ["@babel/preset-env"],
"plugins": [
["@babel/transform-runtime"]
]
}
Получил этот код из этого ответа отсюда
Эта проблема возникает, когда в вашем ответе есть ошибка, например, когда ответ правильный, но в ответе then вы делаете что-то, что вызывает ошибку, axios затем перехватывает эту ошибку, даже если ответ от сервера был успешным