我正在尝试制作一个从网站上删除数据的网络服务,但我制作的网站服务并没有显示在我的浏览器上。我正在使用带有Express框架的Nodej。
我的得分.js有效,如果我在命令提示符下运行它,我可以从中获取JSON数据但是当我在Express框架下运行时,我的浏览器上没有显示任何内容。
这是我用于 server.js
的代码var express = require('express');
var scores = require('./scores');
var app = express();
var port = process.env.PORT || 80;
var router = express.Router();
router.use(function(req, res, next) {
console.log('%s %s', req.method, req.path);
next();
});
router.get('/scores', function(req, res, next) {
res.json({result : scores.getAll()});
});
app.use('/api', router);
app.listen(port);
console.log('Server listening on port ' + port);
这是 scores.js
的代码var cheerio = require('cheerio');
var requestify = require('requestify');
var rl = require('readline');
var prompts = rl.createInterface(process.stdin, process.stdout);
exports.getAll = function() {
var jsonResponse;
requestify.get('http://example.com').then(function(response) {
var _response = {
'results' : []
};
var title, link, runtime;
response.getBody();
$ = cheerio.load(response.body);
$('.content').each(function() {
$(this).find('a, img, span').each(function(i, elem) {
if ($(this).is('img'))
title = ($(this).attr('alt'));
if ($(this).is('a') && $(this).attr('class') != 'preview')
link = ($(this).attr('href'));
if ($(this).is('span') && $(this).attr('style') == 'float:left;')
runtime = ($(this).text().replace('time:', ''))
});
_response.results.push({"title" : title, "link" : link, "runtime" : runtime});
});
var jsonResponse = JSON.stringify(_response);
});
return jsonResponse;
}
prompts.question("Hit Enter to exit...\n", function() {
process.exit();
});
答案 0 :(得分:0)
你有这一行:
res.json({result : scores.getAll()});
在server.js
中。但是,scores.js
没有相应的方法getAll()
。