当前位置: 首页 > 知识库问答 >
问题:

未捕获的(promise中的)类型错误:无法将未定义或null转换为对象

阙繁
2023-03-14

我对Vue相当陌生,我一直在尝试如何使用Axios调用Java API。

vue.config.js

module.exports = {
    devServer: {
        proxy: 'https://localhost:8080'
    }
}
import { createApp } from 'vue'
import axios from "axios"
import VueAxios from 'vue-axios'
import App from './App.vue'
import store from "./store"
import router from "./router"
import './index.css'

const app = createApp(App)

app.use(VueAxios, axios)

app.use(router)
app.use(store)

app.mount('#app')

dashboard.vue

<template>
  {{responsedata}}
</template>

<script>
  export default {
    name: 'Dashboard',
    data() {
      return {
        responsedata: {}
      }
    },
    async mounted() {
      const { data } = await this.axios.get('/home')
      console.log(data)
    }
  }
</script>

然而,无论我如何尝试,它总是给出错误:

Uncaught (in promise) TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at mergeConfig (axios.js:1308)
    at Axios.request (axios.js:1431)
    at Axios.<computed> [as get] (axios.js:1521)
    at Function.wrap [as get] (axios.js:7)
    at Proxy.mounted (Dashboard.vue:19)
    at callWithErrorHandling (runtime-dom.esm-bundler-6174b24b.js:8129)
    at callWithAsyncErrorHandling (runtime-dom.esm-bundler-6174b24b.js:8138)
    at Array.hook.__weh.hook.__weh (runtime-dom.esm-bundler-6174b24b.js:3392)
    at flushPostFlushCbs (runtime-dom.esm-bundler-6174b24b.js:8330)

在这个错误中,我编辑了dashboard.vue:19的路径,但它来自那里。这行给出了错误:const{data}=await This.axios.get('/home')

@WebServlet
@Path("/home")
public class HomeResource {
    private IServerService serverService;

    @Inject
    public void setServerService(IServerService serverService) {
        this.serverService = serverService;
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getServers(@Context HttpServletRequest req) {
        System.out.println("hello");
        HttpSession session = req.getSession();
        session.setMaxInactiveInterval(Time.HALF_AN_HOUR.time);
        return Response
                .ok()
                .header("Access-Control-Allow-Origin", "*")
                .header("Access-Control-Allow-Credentials", "true")
                .header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization")
                .header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD")
                .header("Access-Control-Max-Age", Time.HALF_AN_HOUR.time)
                .entity(serverService.getServers())
                .build();
    }
}

API运行在localhost端口8080上,Vue应用程序运行在localhost端口3000上。我不确定是我做错了跨原点还是完全不同的事情。我所要做的就是从API获取数据并将其显示到前端。

附言。谢谢你的帮助。

共有1个答案

房项禹
2023-03-14

如果服务器位于不同的URL和/或端口上,则需要给Axios提供完整的URL,例如localhost:8080/home。目前,Axios正在尝试获取localhost:3000/home,它位于Vue端,而不是API端。

 类似资料:
  • 我的职能是: 我在这条线上出错了。 我们需要解决它。请帮忙做。

  • 获取错误。我尝试做多个选择,并更改第二个选择的数据与第一个选择的上更改材料表行。我正在使用Firebase。 当“store.Urunler”为null或未定义时,我会出现此错误。而且我的产品没有列在菜单项上,这意味着选择是空的,但state.products有数据 我怎样才能克服这个错误。我还想添加到Urunler,选择一个输入。我知道我应该为onChanges调用函数,但如果它起作用,我以后会

  • 这是控制台告诉我的: TypeError:无法将未定义的转换为对象 (如果我把它从代码中删除,他对vertikal也是这么说的) 除了其他一些空字符串,这是我代码的开始。。。错在哪里?是不是太多了以至于我看不见?

  • 我正在运行一个React应用程序。 当我通过路由(单击按钮或链接)进入页面时,页面工作正常,但当我重新加载页面时,页面崩溃。我看不到错误在哪里,控制台和源代码显示为空,这是服务器消息控制台消息。 这是运行的代码。我尝试删除currentuser、addhabity和许多其他东西,只是为了了解错误的来源。没有结果。如果我通过链接进入页面,一切正常。 HabiddView.web.jsx 生活orm.

  • 我想有一个无限滚动的项目列表,我正在使用这个包https://github.com/CassetteRocks/react-infinite-scroller但是在留档中没有提到抓取功能的样子。 在我的代码中,它是这样的: 完整消息错误: 未捕获(promise中)类型错误:无法读取评估时未定义的属性“companys”(traineships.component.js:71) 编辑:(我不再有错

  • 我正在我的反应应用程序中创建一个上一个和下一个按钮。我试图获取页面的当前索引(我有一个存储在对象中的页面列表) 这是密码 我得到的错误是“类型错误:无法将未定义或空转换为对象” 需要明确的是,imageName和images不是空的或未定义的(因为当I console.log它时,它有我需要的数据)。 提前谢谢!