API 错误代码 Nodejs


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});
}
});

最新更新