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

时间:2019-01-03 08:01:36

标签: vue.js electron axios babel-polyfill

我正在将带有Axios的Electron Vue应用程序用于对Laravel服务器的HTTP调用。在Electron的Dev模式下,一切都很完美。但是,一旦我将我的Electron App构建到安装中并将其安装到客户端计算机上,所有混乱便爆发了。我解决了一些问题,但是这个问题会杀死我。

简单地说,即使所有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的Request Method进行附加的HTTP调用。为什么?我不认为CORS可以解决我的问题。

也在我的Electron Vue background.js内部,我重新打开了网络安全性。由于发展而退出。哪个都没改变。

win = new BrowserWindow({
    width: 275,
    height: 640,
    title: 'title',
    // webPreferences: { webSecurity: false }
})

有人知道发生了什么吗?

编辑-1-14-2019

找到错误“未定义regeneratorRuntime”后,我认为这是Babel问题。我已经遵循了https://babeljs.io/docs/en/babel-polyfill/的所有内容,但仍然得到“未定义regeneratorRuntime”的信息。关于Babel + Axios +电子+等待/同步,一切正常吗?我个人不仅希望忽略“未定义regeneratorRuntime”,并且在可能的情况下为该问题找到可靠的解决方案。任何供我研究的投入或事物,将不胜感激!

2 个答案:

答案 0 :(得分:0)

经过大量的Google搜索,我发现我只是在package.json中缺少依赖项。即使它们在node_modules文件夹中是必需的,也未在我的程序中列为依赖项。

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

csgo[key] = { icon: icon_url, exterior };

然后在.babelrc中添加:

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

here的答案中获得了这段代码

答案 1 :(得分:0)

当您的响应出现错误时,例如当响应正确时,就会发生此问题,但是在随后的响应中,您执行了一些操作会抛出错误,即使服务器响应成功,axios也会捕获该错误