更新于 2019-01-02
应用 eggjs 重构了下此项目,有兴致的能够参考看看,传送门
起首谢谢作者的分享,很赞~,原文地点
这里记录下编码碰到的题目,这里只针对 sever
进行了考证。有一样碰到题目的童鞋,能够作为参照~
当地环境:
- Node: v10.13.0
- OS: window 7
- npm: 6.4.1
题目一(mongoose
相干)
题目形貌:DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
处理方案:
mongoose.connect(config.dbUri, {
useCreateIndex: true,
useNewUrlParser: true
})
或许
mongoose.set('useCreateIndex', true)
mongoose.connect(config.dbUri, { useNewUrlParser: true })
对应的源码文件 kendou-book/book-server/server/database/init.js
,触及修正的代码以下:
...
+ var opts = {
+ useCreateIndex: true,
+ useNewUrlParser: true
+ };
- mongoose.connect(db);
+ mongoose.connect(db, opts);
题目形貌:DeprecationWarning: collection.count is deprecated
处理方案:
底层的mongodb驱动程序已弃用.count()要领。您应当运用.estimatedDocumentCount()或.countDocuments()替代。
对应的源码文件 kendou-book/book-server/server/tasks/runninng.js
,触及修正的代码以下:
...
// 激活爬数据 为下一次效劳
await taskBook(item.bookId)
let count = await Chapter.find({
bookId: item.bookId
- }).count()
+ }).countDocuments()
题目二(puppetter 相干
)
题目形貌:ERROR: Failed to download Chromium r588429! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
处理方案:
vi .npmrc
type puppeteer_download_host = https://npm.taobao.org/mirrors
yarn add puppeteer -D or npm i puppeteer --save-dev
题目形貌:(node:19996) UnhandledPromiseRejectionWarning: TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
处理方案:
对应的源码文件 kendou-book/book-server/server/crawler/book.js
,触及修正的代码以下:
...
console.log('bookkkk:', browser)
const page = await browser.newPage()
await page.goto(url, {
waitUntil: 'networkidle2',
+ timeout: 3000000
})
对应的源码文件 kendou-book/book-server/server/crawler/chapter.js
,触及修正的代码以下:
...
const page = await browser.newPage()
await page.goto(url, {
waitUntil: 'networkidle2',
+ timeout: 3000000
})
题目三(源码瑕疵
)
题目形貌:定义 book 的 schema 的时刻,字段(author)拼写错误
处理方案:
对应的源码文件 kendou-book/book-server/server/database/schema/book.js
,触及修正的代码以下:
...
- auhtor: {
type: String
},
+ author: {
type: String
},
对应的源码文件 kendou-book/book-server/server/crawler/book.js
,触及修正的代码以下:
...
let result = await page.evaluate(() => {
return {
headImg: document.querySelector('.story_cover_m62topxs img').getAttribute('src'),
name: document.querySelector('.info_left_m62topxs h1').innerText,
- auhtor: document.querySelector('.info_left_m62topxs h2 a').innerText,
+ auhtor: document.querySelector('.info_left_m62topxs h2 a').innerText,
chapterNum: document.querySelectorAll('.cp_dd_m62topxs').length
}
})
参考链接: