gpt4 book ai didi

javascript - KOA2+node+ejs错误: Can't set headers after they are sent

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:46 24 4
gpt4 key购买 nike

使用kOA2+node js+ajax抓取网页数据并在首页显示结果信息:

查询.js

const superagent = require('superagent');
const charset = require('superagent-charset');
const cheerio = require('cheerio');

charset(superagent);

function Rate(from, to, queryNumber) {
this.from = from;
this.to = to;
this.queryNumber = queryNumber;
}

module.exports = Rate;

Rate.query = function query(rate, callback) {
let URL = 'http://qq.ip138.com/hl.asp?from=' + rate.from + '&to=' + rate.to + '&q=' + rate.queryNumber;
superagent.get(URL)
.charset('gbk')
.end((err, sres)=> {
if (err) {
return next(err);
}
var $ = cheerio.load(sres.text);
var queryResult = [];
queryResult[0] = $(".rate td").eq(4).text();
queryResult[1] = $(".rate td").eq(5).text();
callback(null, queryResult);

})
};
<小时/>

index.js

const index = require('koa-router')();
const Rate = require('../models/query');

index.get('/s*', async (ctx, next) => {
let rate = new Rate(ctx.query.from, ctx.query.to, ctx.query.queryNumber);
await Rate.query(rate, (err, queryResult) => {
if (err) {
return next(err);
} else {
return ctx.render('query', {
title: '查询结果',
rate: queryResult[0],
amount: queryResult[1]
});
return next();
}

});

访问“/s*”页面时,出现:(Node: 808) UnhandledPromiseRejectionWarning: Unhandled hatrejection (rejection id: 1): Error: Can not set headers after they are sent.错误,页面无法跳转。

尝试了很多方法,还是不知道提前返回哪里。

现在知道了,因为ctx结束后,还要调用render来写入数据。 。但是那不是要改变的地方。请帮助我。

最佳答案

请更新

const index = require('koa-router')();
const Rate = require('../models/query');

index.get('/s*', async (ctx, next) => {
let rate = new Rate(ctx.query.from, ctx.query.to, ctx.query.queryNumber);
await Rate.query(rate, (err, queryResult) => {
if (err) {
return next(err);
} else {
return ctx.render('query', {
title: '查询结果',
rate: queryResult[0],
amount: queryResult[1]
});
return next();
}

});

const index = require('koa-router')();
const Rate = require('../models/query');

index.get('/s*', async (ctx, next) => {
let rate = new Rate(ctx.query.from, ctx.query.to, ctx.query.queryNumber);
await Rate.query(rate, (err, queryResult) => {
if (err) {
return next(err);
} else {
return ctx.render('query', {
title: '查询结果',
rate: queryResult[0],
amount: queryResult[1]
});
}

});

关于javascript - KOA2+node+ejs错误: Can't set headers after they are sent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44997105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com