node下,运行弹出错误
请问各位大神,这个问题应该怎么解决?
我试过npm init --yes了,还是不行。
下面是代码
var http = require('http'); var promise = require('bluebird'); var cheerio = require('cheerio'); var baseUrl = 'http://www.imooc.com/learn/'; var videoIds = [75,134,197,259,348,637]; function filterChapters(html){ var $ = cheerio.load(html); /*var chapters = $('.mod-chapters'); var title = $('#page_title .path span').text(); var num = parseInt($($('.info_num i')[0]).text().trim(),10);*/ var chapters = $('.chapter') var title = $('.course-infos .path span').text() var number = parseInt($($('.meta-value strong')[3]).text().trim(), 10) /*courseData = { title: title, number: number, videos: [{ chapterTitle: '', videos:[ title: '', id: '' ] }] } */ var courseData = { videos: [], number: number, title: [] }; chapters.each(function(item){ var chapter = $(this); var chapterTitle = chapter.find('strong').text(); var videos = chapter.find('.video').children('li') var chapterData = { chapterTitle: chapterTitle, videos:[] } videos.each(function(item){ var video = $(this).find('.J-media-item'); var videoTitle = video.text(); var id = video.attr('href').split('/video/')[1]; chapterData.videos.push({ title: videoTitle, id: id }) }) courseData.push(chapterData); }) return courseData; } function printCourseInfo(coursesData) { coursesData.forEach(function(courseData) { console.log(courseData.num + '人学过' + courseData.title + '\n'); }) coursesData.forEach(function(courseData) { console.log('###' + 'courseData.title' + '\n'); var chapterTitle = item.chapterTitle; courseData.forEach(function(item) { console.log('###' + 'courseData.title' + '\n'); var chapterTitle = item.chapterTitle; console.log(chapterTitle+'\n'); item.videos.forEach(function(video) { console.log(' 【'+video.id+'】'+video.title+'\n'); }) }) }) } function getPageAsync(url) { return promise(function(resolve,reject) { console.log('正在爬取'); http.get(url,function(res) { var html = ''; res.on('data',function(data){ html += data; }) res.on('end',function(){ resolve(html); }) }).on('error',function(e){ reject(e); console.log('获取课程数据出错'); }) }) } var fetctCourseArray = []; videoIds.forEach(function(id) { fetctCourseArray.push(getPageAsync(baseUrl + id)); }) promise .all([]) .then(function(pages) { var courseData = []; pages.forEach(function(html) { var courses = filterChapters(html); courseData.push(courses); }) courseData.sort(function(a,b) { return a.number > b.number }) printCourseInfo(courseData); })