Koa2 + Mongo + 爬虫 搭建 小说微信小程序(本地开发篇)—编码时遇到的问题

11次阅读

共计 2220 个字符,预计需要花费 6 分钟才能阅读完成。

首先感谢作者的分享,很赞~
这里记录下编码遇到的问题,这里只针对 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
}
})
参考链接:
mongoose 相关
mongoose 相关
puppetter 安装就踩坑 - 解决篇

正文完
 0