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