新萌遇到node报错,请前辈指点

代码如下

// 引入依赖
const express = require('express')
const superagent = require('superagent')
const cheerio = require('cheerio')

// 建立 express 实例
const app = express()

app.get('/', (req, res) => {
  superagent.get('https://cnodejs.org/')
    .end((err, sres) => {
      if (err) { return next(err) }
      let $ = cheerio.load(sres.text);
      let items = $('#topic_list .topic_title').map((item) => {
        let $item = $(item)
        return {
          title: $item.attr('title'),
          href: $item.attr('href')
        }
      })
      res.send(items)
    })
})

app.listen(3000, () => { console.log('app is listening at port 3000') })

报错如下:

TypeError: Converting circular structure to JSON
    at Object.stringify (native)
    at stringify 
    at ServerResponse.json
    at ServerResponse.send
    at superagent.get.end
    at Request.callback 
    at Stream.<anonymous>
    at emitNone (events.js:86:13)
    at Stream.emit (events.js:185:7)
    at Unzip.<anonymous>

没找到原因。

阅读 3.4k
2 个回答

你传递的不是JSON数据吧。

试一试res.json(...)

但是这样要引入bodyParser,先npm install安装一下,然后:
var bodyParser = require('body-parser');

建议新手先用express生成的模版框架,看看模版怎么写的

所以你现在可以:

Google一下怎么生成express模版。

把res.send中的send变成json

$('#topic_list .topic_title').map(...)

问题出在这句
换成
$('#topic_list .topic_title').each(...)

就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题