无法读取NodeJS中未定义的属性“ get”

时间:2018-07-13 07:49:12

标签: javascript node.js

我正在使用NodeJS。运行节点服务器时出现错误。我正在从server.js运行Node并调用status.js中存在的函数。

server.js:-

const express = require('express');
const bodyParser = require('body-parser');
const http = require('http');
const getHttpsRequests = require("./status");


const app = express();
const server = new http.Server(app);
let interval;

server.listen(3000, () => {
    console.log("Server is listening on port 3000");
});


server.on('listening', () => {
    interval = setInterval(() => {
        getHttpsRequests(); // call the function getHttpsRequests from status.js
    }, 1000);
});

status.js:-

var https = require('https');

module.exports = function getHttpsRequests (https) {

    https.get('google.com', function (res) {
        console.log("statusCode: ", res.statusCode);
        console.log("headers: ", res.headers);

       res.on('data', function (d) {
            process.stdout.write(d);
        });

    }).on('error', function (e) {
        console.error(e);
    });
}

我已经安装了必需的软件包:-

npm install express body-parser http --save

我正在运行节点服务器,

node server.js

它给我错误:-

https.get('google.com', function (res) {
          ^

TypeError: Cannot read property 'get' of undefined

2 个答案:

答案 0 :(得分:5)

您期望在getHttpsRequest中使用https参数,但是您不会将其传递给函数,因此即使您从外部将其导出,该参数也会在函数内部给您带来不确定的含义。您可以删除该参数,也可以使用其他名称

var https = require('https');

module.exports = function getHttpsRequests (http) {

    https.get('google.com', function (res) {
        console.log("statusCode: ", res.statusCode);
        console.log("headers: ", res.headers);

       res.on('data', function (d) {
            process.stdout.write(d);
        });

    }).on('error', function (e) {
        console.error(e);
    });
}

答案 1 :(得分:0)

在您的getHttpsRequests中,您正在传递https参数,它将覆盖父https。从函数中删除https参数,

module.exports = function getHttpsRequests (){

    https.get('google.com', function (res) {
        console.log("statusCode: ", res.statusCode);
        console.log("headers: ", res.headers);

       res.on('data', function (d) {
            process.stdout.write(d);
        });

    }).on('error', function (e) {
        console.error(e);
    });
}