2017-07-09 1 views
2
gesendet werden

Verwenden kOA2 + Knoten js + Ajax die Web-Seite Daten zu packen und das Ergebnis Informationen auf der Titelseite angezeigt werden:KOA2 + Knoten + ejs Fehler: nicht Header gesetzt, nachdem sie

query.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(); 
     } 

    }); 

wenn Besuch „/ s *“ Seite erscheinen: (Node: 808) UnhandledPromiseRejectionWarning: Un hate rejection (Ablehnungs-ID: 1): Fehler: Header können nach dem Senden nicht festgelegt werden. Fehler, und die Seite kann nicht springen.

Ich habe viele Wege versucht, weiß aber immer noch nicht, wo ich im Voraus zurückkommen soll.

Ist jetzt bekannt, denn nach dem Ende von CTX, sondern auch um Render zu schreiben Daten zu rufen. The The Aber das ist nicht zu ändern. Bitte hilf mir.

Antwort

0

Bitte aktualisieren

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

    }); 

zu

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

    }); 
+0

, um Ihren Code geändert, aber es wird auch das gleiche Problem. – HaHei

Verwandte Themen