问题:即使响应为 200 也会调用 Axios Catch(成功)

我正在使用带有 Axios 的Electron Vue应用程序对我的 Laravel 服务器进行 HTTP 调用。在 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 的帖子。所以我在我的 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 问题。我已经关注了https://babeljs.io/docs/en/babel-polyfill/的所有内容,但我仍然得到“regeneratorRuntime 未定义”。 Babel + Axios + Electron + Await/Sync 一起工作没有错误吗?我个人希望不只是忽略“未定义 regeneratorRuntime”,如果可能的话,为这个问题找到一个可靠的解决方案。任何让我研究的意见或事情将不胜感激!

解答

经过大量谷歌搜索后,我发现我只是在 package.json 中缺少依赖项。尽管它们在 node_modules 文件夹中是必需的,但它们并未在我的程序中列为依赖项。

处理我的 Electron + Vue + Axios + Async/Await 的生产版本

npm install --save @babel/runtime 
npm install --save-dev @babel/plugin-transform-runtime

并且,在 .babelrc 中,添加:

{
    "presets": ["@babel/preset-env"],
    "plugins": [
        ["@babel/transform-runtime"]
    ]
}

从的这个答案中得到这个代码

Logo

前往低代码交流专区

更多推荐