我正在使用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
答案 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);
});
}