You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+Axios请求API报错:Cannot read properties of undefined (reading 'protocol')

问题

在React项目中使用Axios请求API获取数据时,控制台抛出错误:Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol')

实现代码:

import React,{useState,useEffect} from 'react'
import "../App.css"
import axios from "axios"
const Main = () => {
    const [loading,setLoading] = useState(false)
    const [data,setData] = useState ([])
    useEffect (() =>{
        setLoading(true)
        axios({
            method:"GET",
            URL:'https://fakestoreapi.com/products',
         
        }).then(res => {
            console.log (res.data)
            setData(res.data)
        })
        .finally(()=> setLoading(false))
    },[])
  return (
   <div></div>
  )
}

export default Main

报错信息:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol')
    at isURLSameOrigin (isURLSameOrigin.js:57:1)
    at dispatchXhrRequest (xhr.js:147:1)
    at new Promise (<anonymous>)
    at xhrAdapter (xhr.js:16:1)
    at dispatchRequest (dispatchRequest.js:58:1)
    at Axios.request (Axios.js:109:1)
    at wrap (bind.js:9:1)
    at Main.js:10:1
    at commitHookEffectListMount (react-dom.development.js:23150:1)
    at commitPassiveMountOnFiber (react-dom.development.js:24926:1)

解决方案

这个错误的根源是Axios配置对象的属性名写错了——你用了大写的URL,但Axios要求的是小写的url参数。

修正后的代码:

import React,{useState,useEffect} from 'react'
import "../App.css"
import axios from "axios"
const Main = () => {
    const [loading,setLoading] = useState(false)
    const [data,setData] = useState ([])
    useEffect (() =>{
        setLoading(true)
        axios({
            method:"GET",
            url:'https://fakestoreapi.com/products', // 改为小写url
         
        }).then(res => {
            console.log (res.data)
            setData(res.data)
        })
        .catch(err => { // 建议添加catch捕获异常,避免未处理的Promise报错
            console.error('请求失败:', err)
        })
        .finally(()=> setLoading(false))
    },[])
  return (
   <div></div>
  )
}

export default Main

错误原因说明

Axios的配置对象中,指定请求地址的参数是小写的url,你写的大写URL属于未被识别的属性,导致Axios无法获取到有效请求地址,内部处理时尝试读取一个undefined值的protocol属性,最终抛出类型错误。

内容的提问来源于stack exchange,提问作者JESSER HARABI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 12:36:14