Невозможно прочитать свойство get of undefined в NodeJS

Я использую NodeJS. Я получаю сообщение об ошибке при запуске Node Server. Я запускаю Node из server.js и вызываю функцию, которая присутствует в 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.info("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.info("statusCode: ", res.statusCode);
        console.info("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
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 159
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы ожидаете аргумента https в getHttpsRequest, но вы не передаете его функции, и, следовательно, он дает вам undefined внутри функции, даже если вы экспортировали его извне. Либо вы удалите этот аргумент, либо назовете его по-другому

var https = require('https');

module.exports = function getHttpsRequests (http) {

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

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

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

@RaviMariya, это не опечатка, поскольку он сказал в ответ, что назвал аргумент иначе

vibhor1997a 13.07.2018 09:54

о, я вижу свое плохое: D

Ravi Mariya 13.07.2018 09:55

В вашем getHttpsRequests вы передаете аргумент https, который переопределит родительский https. Удалите аргумент https из вашей функции,

module.exports = function getHttpsRequests (){

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

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

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

Другие вопросы по теме