使用Axios拦截器时出现axios.get is not a function错误求助
问题原因与解决方案
问题根源
- 未导出配置后的Axios实例:你在
lib/axios.js中修改了原生Axios的拦截器,但没有将处理后的Axios对象导出。其他文件引入该模块时,默认获取的是module.exports的空对象,因此调用axios.get会提示“不是函数”。 - 正则表达式语法错误:你的
isAbsoluteURLRegex缺少闭合斜杠,导致正则无法正常解析。 - BaseURL格式错误:拼接的地址
https:localhost:1234缺少双斜杠,应该是https://localhost:1234,否则会导致请求地址无效。
修正后的完整代码
修改lib/axios.js,补充导出语句并修复语法错误:
const axios = require('axios'); // 修复正则表达式的闭合斜杠 const isAbsoluteURLRegex = /^(?:\w+:)\/\//; axios.interceptors.request.use(function(config) { if (!isAbsoluteURLRegex.test(config.url)) { // 修复BaseURL的双斜杠问题 config.url = `https://localhost:1234${config.url}`; } return config; }); // 导出配置好的Axios实例,供其他模块引入使用 module.exports = axios;
验证方式
修改后,其他文件通过const axios = require('../lib/axios')引入的就是配置了拦截器的Axios实例,此时调用axios.get('/api/report/8')会自动拼接BaseURL,且不会再抛出“不是函数”的错误。
内容的提问来源于stack exchange,提问作者J.Cart
相关产品推荐
相关产品推荐

