node.js - nodeJS,偶尔报错

查看:119
本文介绍了node.js - nodeJS,偶尔报错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有两个文件,文件b如下:

var http=require('http');
module.exports=function(options,callback){
    console.info('start');
    var result;
    var req = http.request(options, (res) => {
      console.log(`STATUS: ${res.statusCode}`);
      console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
      res.setEncoding('utf-8');
      res.on('data', (chunk) => {
          result=JSON.parse(chunk)
        result=result.result;
        callback(result)
      });
//      res.on('end', () => {
//        console.log('No more data in response.')
//      })
    });
    
    req.on('error', (e) => {
      console.log(`problem with request: ${e.message}`);
    });
    
    // write data to request body
    req.end();
    
}

然后在文件a require,如下:

getWeather=require('./getWeather');
var save=require('./saveWeather');
var result=getWeather(options,function(result){
    console.log(result)
    save.houliData(result,'bg_hourly_weather')
    save.dailyData(result,'bg_daily_weather')
});

有的时候程序能正常运行,但是有的时间会报错

这是什么原因?求指教~~~~

解决方案

      res.on('data', (chunk) => {
          result=JSON.parse(chunk)
        result=result.result;
        callback(result)
      });

这段有问题,data 事件被响应时,chunk 可能并不是完整的数据,因此你不能在此处使用 JSON.parse(chunk),你应该等所有数据接收完毕时再解析。

这篇关于node.js - nodeJS,偶尔报错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆