javascript - NodeJS:无法读取未定义的属性“长度”
问题描述
当我在 nodejs 中运行 node app.js 时,错误消息显示'无法读取未定义的属性'长度''。我已经安装了所有相关的库(例如请求)并查看了不同的相关帖子。但是,问题仍然存在。
请你能告诉我如何解决它。非常感谢!
Windows 10 家庭电脑 Visual Studio 代码
//app.js
const geocode = require('./utils/geocode')
const forecast = require('./utils/forecast')
geocode('Boston', (error, data) => {
console.log('Error', error)
console.log('Data', data)
forecast(data.latitude, data.longitude, (error, data) => {
console.log('Error', error)
console.log('Data', data)
})
})
// forecast.js
const request = require('request')
const forecast = (latitude, longitude, callback) => {
const url =
'https://api.darksky.net/forecast/9d1465c6f3bb7a6c71944bdd8548d026/' +
latitude + ',' + longitude
request({ url: url, json: true }, (error, response) => {
if (error) {
callback('Unable to connect to weather service!', undefined)
} else if (response.body.error) {
callback('Unable to find location', undefined)
} else {
callback(undefined, response.body.daily.data[0].summary + ' It is
currently ' + response.body.currently.temperature + ' degress out. There
is a ' + response.body.currently.precipProbability + '% chance of rain.')
}
})
}
module.exports = forecast
// geocode.js
const request = require('request')
const geocode = (address, callback) => {
const url = 'https://api.mapbox.com/geocoding/v5/mapbox.places/' +
address + '.json?access_token=pk.eyJ1IjoiYW5kcmV3bWVhZDEiLCJhIjoiY2pvOG8ybW90MDFhazNxcnJ4OTYydzJlOSJ9.njY7HvaalLEVhEOIghPTlw&limit=1'
request({ url: url, json: true }, (error, response) => {
if (error) {
callback('Unable to connect to location services!', undefined)
} else if (response.body.features.length === 0) {
callback('Unable to find location. Try another search.',
undefined)
} else {
callback(undefined, {
latitude: response.body.features[0].center[0],
longitude: response.body.features[0].center[1],
location: response.body.features[0].place_name
})
}
})
}
module.exports = geocode
我希望看到波士顿,它的纬度和经度。
解决方案
在检查features
长度之前,还可以检查是否features
存在:
else if (response.body.features && response.body.features.length === 0) {
推荐阅读
- ruby-on-rails - 如何防止边缘情况或计划任务的截止日期延迟?
- python-3.x - 如何在 matplotlib 中绘图的 x 轴上运行脚本
- arrays - 未命名数组的 JSON 模式?
- javascript - 使用 wrapAll() 方法将列表项包装在两列中
- sql - 将 nvarchar 值“0.7”转换为数据类型 int 时转换失败
- c# - 如何在visual studio中添加引用一段代码或#region的注释
- javascript - Angular 8:URL 编码形式 POST
- c++ - 为什么 std::ostreambuf_iterator 截断整数?
- angular - 无法接收带有 Angular 8 注入的 http 类的 XML 响应
- angular - 在使用 socket.io 的 Angular 应用程序中处理反向代理