正则表达式导致console.log输出为空的问题排查
问题根因
- 后端返回的
response.data是经过axios自动解析的数组对象,不存在字符串的replace方法,直接调用会抛出类型错误。你在Landing.js的catch块中没有打印错误,因此看不到报错信息,误以为没有输出。 replace方法语法错误:字符串的replace方法要求传入两个参数(匹配规则、替换内容),你仅传入了正则表达式,不符合语法要求,执行会直接报错。- 你的需求是提取
date字段的数字,不需要直接操作整个响应体,应该先定位到date字段再做处理。
修复方案
1. 修复api.js逻辑
export async function manderleySurveyGet () { try { let response = await axios.get('http://localhost:6000/'); // 取返回数组第一条数据的date字段,兼容空返回的情况 const rawDate = response.data?.[0]?.date || ''; // 用match匹配符合规则的日期字符串 const dateMatch = rawDate.match(/\d{1,2} \d{2} \d{4}/); if (dateMatch) { // 示例:去掉空格仅保留数字,可按需调整处理逻辑 return dateMatch[0].replaceAll(' ', ''); } return ''; } catch (err) { // 抛出错误供外层捕获处理 throw new Error(err.message); } }
2. 修复Landing.js的错误捕获逻辑
manderleySurveyGet() .then(response => { console.log("SURVEY API RESULT LANDING:", response); }) .catch(err => { // 打印错误信息便于排查问题 console.error('请求报错:', err.message); });
内容的提问来源于stack exchange,提问作者Constantine1984
相关产品推荐
相关产品推荐

