即使响应为 200(成功),也会调用 Axios Catch
Axios Catch being called even when response is 200 (Successful)
我正在使用带有 Axios 的 Electron Vue 应用程序来对我的 Laravel 服务器进行 HTTP 调用。在 Electron 的 Dev 模式下,一切都很完美。但是,一旦我将我的 Electron App 构建到安装中并将其放在客户端计算机上,所有混乱就爆发了。我解决了一些问题,但这一个问题会杀了我。
简而言之,即使所有 Axios return 都成功地抛出了我放入 .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 的帖子。所以我在我的 Web 服务器和 Laravel 中完成并启用了它。这造成了更大的混乱。同样的错误,但这次没有数据应用于任何东西。所以 .then() 甚至没有被调用。在启用 CORS 的情况下,我的 Axios 似乎正在使用 OPTIONS 的请求方法进行额外的 HTTP 调用。为什么?我认为 CORS 不能解决我的问题。
也在我的 Electron Vue 中 background.js 我重新打开了网络安全。由于开发而关闭。这并没有改变任何东西。
win = new BrowserWindow({
width: 275,
height: 640,
title: 'title',
// webPreferences: { webSecurity: false }
})
有人知道发生了什么事吗?
编辑 - 2019 年 1 月 14 日
发现错误后"regeneratorRuntime is not defined"我认为这是一个 Babel Issue。我已经完成了所有操作 https://babeljs.io/docs/en/babel-polyfill/,但我仍然得到了 "regeneratorRuntime is not defined"。 Babel + Axios + Electron + Await/Sync 一起工作没有错误吗?我个人不想只是忽略 "regeneratorRuntime is not defined" 并尽可能找到解决此问题的可靠方法。任何我研究的输入或东西将不胜感激!
经过多次谷歌搜索后,我发现我只是缺少 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"]
]
}
从
的答案中获得此代码
当您的响应有错误时会发生此问题,例如当响应正确但在当时的响应中您做了一些抛出错误的事情时,axios 会捕获该错误,即使来自服务器的响应是成功的
我正在使用带有 Axios 的 Electron Vue 应用程序来对我的 Laravel 服务器进行 HTTP 调用。在 Electron 的 Dev 模式下,一切都很完美。但是,一旦我将我的 Electron App 构建到安装中并将其放在客户端计算机上,所有混乱就爆发了。我解决了一些问题,但这一个问题会杀了我。
简而言之,即使所有 Axios return 都成功地抛出了我放入 .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 的帖子。所以我在我的 Web 服务器和 Laravel 中完成并启用了它。这造成了更大的混乱。同样的错误,但这次没有数据应用于任何东西。所以 .then() 甚至没有被调用。在启用 CORS 的情况下,我的 Axios 似乎正在使用 OPTIONS 的请求方法进行额外的 HTTP 调用。为什么?我认为 CORS 不能解决我的问题。
也在我的 Electron Vue 中 background.js 我重新打开了网络安全。由于开发而关闭。这并没有改变任何东西。
win = new BrowserWindow({
width: 275,
height: 640,
title: 'title',
// webPreferences: { webSecurity: false }
})
有人知道发生了什么事吗?
编辑 - 2019 年 1 月 14 日
发现错误后"regeneratorRuntime is not defined"我认为这是一个 Babel Issue。我已经完成了所有操作 https://babeljs.io/docs/en/babel-polyfill/,但我仍然得到了 "regeneratorRuntime is not defined"。 Babel + Axios + Electron + Await/Sync 一起工作没有错误吗?我个人不想只是忽略 "regeneratorRuntime is not defined" 并尽可能找到解决此问题的可靠方法。任何我研究的输入或东西将不胜感激!
经过多次谷歌搜索后,我发现我只是缺少 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"]
]
}
从
当您的响应有错误时会发生此问题,例如当响应正确但在当时的响应中您做了一些抛出错误的事情时,axios 会捕获该错误,即使来自服务器的响应是成功的