Javascript 客户端对服务器的请求

Javascript 客户端对服务器的请求,javascript,node.js,Javascript,Node.js,客户端函数正在从服务器请求数据。我将此函数导入到需要使用它的其他文件中。它工作得很好。但我不明白为什么在命令提示符下收到“Undefined”。我已经评论了所有的console.log,但它仍然会出现。我不确定进出口是否有问题 这是我的密码: //tstReq.js function getData(iccid) { toString(iccid); var http = require('http'); var jasParseData; var options = { host:

客户端函数正在从服务器请求数据。我将此函数导入到需要使用它的其他文件中。它工作得很好。但我不明白为什么在命令提示符下收到“Undefined”。我已经评论了所有的console.log,但它仍然会出现。我不确定进出口是否有问题

这是我的密码:

//tstReq.js

function getData(iccid) {
toString(iccid);
var http = require('http');
var jasParseData;

var options = {
    host: 'demo8620001.mockable.io',
    port: 80,
    path: '/Api3',
    method: 'get'
  };

  http.request(options, function(res) {
    //console.log('STATUS: ' + res.statusCode);
    //console.log('HEADERS: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
      //console.log('BODY: ' + chunk);
      josParseData= JSON.parse(chunk);
      for(i = 0, len = Object.keys(josParseData.iccid[i]).length; i<=len; i++) {
        //console.log('JSON.parse:',josParseData.iccid[i]);
        //console.log("iccid:     ",iccid);
        if (josParseData.iccid[i] === iccid) {    // Only printed match iccid
          console.log('JSON.parse:',josParseData.iccid[i]);
          console.log("iccid:     ",iccid);
        }
        if (josParseData.iccid[i] === iccid) {
          console.log("Valid Jasper", i+1);
          console.log('\n');
        }
        else{
          // console.log ("Invlid Jasper");
        }
        //console.log('\n');
      }

      //console.log('\n');



    });
  }).end();

};

module.exports = getData; 

由于函数getData没有return语句,因此可能会出现未定义的情况。这并不意味着你的函数坏了,只是没有直接返回结果

如果要记录getData的结果,需要返回http.request,并且需要通过在回调中返回来解析http.request


另外,我注意到您声明了
var jasParseData
您可能指的是josParseData。

@Barbar这个问题太宽泛了,而且,就目前而言,它也没有明确的问题陈述。如果您不立即进行更改,此问题将被关闭。您是否从控制台调用该函数?如果是,则功能工作的结果是
undefined
。此外,在输出上还有一个链接,您可以看到它从哪个位置返回了未定义的
(如果这不是函数的返回值)。我已经从console.log中删除了函数,但仍然存在相同的问题。我刚刚注意到,当我读取包含7个iccid编号的csv文件时,它打印了7次“未定义”。我已将jasParseData替换为josParseData,并在函数中添加了“return 0”,但仍然存在相同的“未定义”问题。
const fs = require('fs');
var parse = require('csv-parse');
var validateICCID = require('./funcValidateId.js');
var getData = require('./tstReq.js');

fs.createReadStream('iccid2.csv')
.pipe(parse({delimiter: ':'}))
.on('data',function(csv) {
    csvrow= csv.toString();
    console.log('\n');
    console.log(getData(csvrow));
    console.log('\n');

});