无法将经纬度传递至Weatherbit API,出现ReferenceError: data未定义
排查提示
- 先精准定位报错代码行:找到后端处理
getWeatherData请求的那段代码,看报错行是不是误把req.query写成了data.query,或者压根没声明data变量就直接用了——比如有没有漏写const data = req.query这类赋值语句? - 检查前端传参逻辑:确认前端调用
getWeatherData时,是不是把lat、lng通过URL查询参数传的?如果是POST请求把参数放在请求体里,后端用req.query肯定拿不到,得换成req.body;另外也检查下前端传参的变量名是不是和后端一致,别把lat写成latitude这类。 - 验证变量作用域:看报错行附近的
data变量是在哪声明的,是不是在异步回调、if分支这类局部作用域里声明的,导致外部访问不到?比如在fetch的回调里声明了data,但回调外面就去用了,这肯定会报错。 - 加日志调试:在报错代码行前加
console.log(req.query),看看后端实际接收到的参数是什么,有没有lat和lng;再打印下data变量(如果有的话),确认它是不是被正确初始化了。 - 检查异步流程:如果从Geonames拿数据和调用Weatherbit是异步操作,确认是不是在拿到Geonames的lat、lng后才调用的
getWeatherData?比如有没有用对async/await或者回调,别在数据还没返回就把undefined的参数传过去了,后续处理自然会出问题。
内容的提问来源于stack exchange,提问作者AnnaG
相关产品推荐
相关产品推荐

