添加反向代理代码后,前端运行白屏
// 设置baseURL,8888是后端端口号,前端请求默认发送到baseURL的地址 var axios = require('axios') axios.defaults.baseURL = 'http://localhost:8888/api' // 全局注册,之后可在其他组件中通过 this.$axios 发送数据 Vue.prototype.$axios = axios
通过F12查看控制台
Uncaught TypeError: Cannot set properties of undefined (setting 'baseURL')
Uncaught TypeError: Cannot read properties of undefined 是一个 JavaScript 运行时错误,它表示试图访问一个未定义(undefined)对象的属性。访问对象是一个不存在的变量或者对象的属性。
axios.defaults.baseURL = 'http://localhost:8888/api'
出问题的是这句话,注释掉就能显示。
axios.defaults.baseURL = 'http://localhost:8888/api'
是一行JavaScript代码,通常用于配置Axios库的默认基础URL。
axios: Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。它允许你发出GET、POST等HTTP请求。
defaults: 这是Axios对象的一个属性,用于设置Axios的默认配置。
baseURL: 这是Axios默认配置中的一个属性,用于设置请求的基础URL。这意味着当你使用axios发起请求时,如果请求的URL以baseURL
开始,那么你不需要重复写baseURL
。
'http://localhost:8888/api'
: 这是你设置的基础URL。这意味着当你使用axios发起请求时,除非你明确指定了不同的URL,否则都会基于这个URL。例如,如果你发起一个GET请求,而请求的URL是'/users'
,那么实际发送的请求URL会是'http://localhost:8888/api/users'
。
设置基础URL的主要目的是为了简化代码和提高可读性。例如,如果你有一个API端点是'/users'
,那么你可以这样发起请求:
axios.get('/users') ? .then(response => { ? ? ?console.log(response.data); ? }) ? .catch(error => { ? ? ?console.error(error); ? });
而不是这样:
axios.get('http://localhost:8888/api/users') ? .then(response => { ? ? ?console.log(response.data); ? }) ? .catch(error => { ? ? ?console.error(error); ? });
通过设置基础URL,你可以避免在每个请求中重复写相同的URL前缀。
1.检查变量是否定义
2.使用默认参数
3.使用链式表达
博主的项目实际解决方法是通过
import axios from 'axios'
代替
// var axios = require('axios')
根本原因分析,先挖个坑。