var API_KEY= 'XXX';
CHANNEL_ID = 'XXX';
router.get('/', function(req, res) {
request.get('https://www.googleapis.com/youtube/v3/search', { part: 'snippet', channelId: CHANNEL_ID, type: 'video', eventType: 'live', key: API_KEY }, function(data) {
try {
if(data['items'].length > 0)
res.json({status: true});
}
catch (err) {
res.json({status: false});
console.log(err)
}
});
});
TypeError: Cannot read property 'length' of undefined
at Request._callback (C:UsersSteveDesktopOwn api checkserver.js:24:21)
at self.callback (C:UsersSteveDesktopOwn api checknode_modulesrequestrequest.js:185:22)
at Request.emit (events.js:182:13)
at Request.start (C:UsersSteveDesktopOwn api checknode_modulesrequestrequest.js:749:10)
at Request.end (C:UsersSteveDesktopOwn api checknode_modulesrequestrequest.js:1506:10)
at end (C:UsersSteveDesktopOwn api checknode_modulesrequestrequest.js:560:14)
at Immediate._onImmediate (C:UsersSteveDesktopOwn api checknode_modulesrequestrequest.js:574:7)
at runCallback (timers.js:696:18)
at tryOnImmediate (timers.js:667:5)
at processImmediate (timers.js:649:5)
完整代码 :
我正在尝试创建一个 API 来读取 YouTube 数据并写入 在我的网站上对我说,如果那个人在心里,但它 总是给我这样的错误
var express = require('express'(; var app = express((; var bodyParser = require('body-parser'(; var request = require('request'(;
//Configure app to use bodyParser(); app.use(bodyParser.urlencoded({ extend: true})); app.use(bodyParser.json()); var port = process.env.PORT || 1337; //Routes for the API var router = express.Router(); router.use(function(req, res, next) { console.log("Got Request"); // -> Something is happening next(); }) var API_KEY= ''; CHANNEL_ID = 'UCmDM6zuSTROOnZnjlt2RJGQ'; router.get('/', function(req, res) { request.get('https://www.googleapis.com/youtube/v3/search', { part: 'snippet', channelId: CHANNEL_ID, type: 'video', eventType: 'live', key: API_KEY }, function(data) { try { if(data['items'].length > 0) res.json({status: true}); } catch (err) { res.json({status: false}); console.log(err) } }); }); //Custom URL e.g. example.com:1337/api/ECHO router.route('/:echo').get(function(req, res) { res.json({echo: req.params.echo}); }) //All routes will be prefixed with /api app.use('/api', router); //Start the server app.listen(port); console.log('API server has been started on port ' + port);
错误在此行
if(data['items'].length > 0)
数据对象没有"项"属性。执行数据对象的控制台.log以查看返回的内容。看起来 Youtube API 未正确调用并返回错误。
请改为在请求中尝试以下代码:
request({url: "https://www.googleapis.com/youtube/v3/search?",
qs:{
part: 'snippet',
channelId: CHANNEL_ID,
type: 'video',
eventType: 'live',
key: API_KEY
}
}, function(err, response, data){
if (err){
console.log(err);
}
console.log(data);
if(data['items'].length > 0) {
res.json({status: true});
}
});