Я использую 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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы ожидаете аргумента 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);
});
}
о, я вижу свое плохое: D
В вашем 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);
});
}
@RaviMariya, это не опечатка, поскольку он сказал в ответ, что назвал аргумент иначе