错误:无法读取节点中未定义 - HTTPS 的属性"get".js



我有一个app.js,它构建了一个d3-Graph。在这个图中有一个Update-Button。单击按钮后,我想调用另一个node.js文件data.js的函数。

Update-Button looks like this:
d3.select("#updatebutton").on("click", function(e) {
        try{
            getJSON();
        }
        catch (e) {
            alert('Error: ' + e);
        }
        window.parent.location = window.parent.location.href;
    });

如果我点击Update-Button,则抛出错误:

错误:无法读取未定义的属性"get"

get是指在data.js中执行的https请求。实施如下:

var https = require('https');
function getJSON() {
var req = https.get(options, function(response) {
    // handle the response
    var res_data = '';
    response.on('data', function(chunk) {
        res_data += chunk;
    });
    response.on('end', function() {
        //do anything with received data
    });
});
req.on('error', function(e) {
    console.log("Got error: " + e.message);
});
req.end();

}

如果我自己运行data.js(cmd:node data.js),它运行得很好!所以https请求本身是好的。但是,如果我从另一个文件app.js调用getJSON(),我会得到上面显示的错误。

如何解决此问题?

var https = require('https'); function getJSON() {...}是客户端上的代码吗?

我看到您从客户端代码调用getJSON();,但看起来其他代码应该在服务器端,因此您需要客户端代码调用某种API,而API将返回function getJSON() {...}函数的结果,因此例如,它将不是客户端对getJSON();的调用,而是$.get('/api/endpoint', function(data) { ... });


编辑

这里有一个使用Express的API示例,因此您需要将其添加到dependencies节点>"express": "~4.13.1",中的package.json中,并运行npm install,然后运行node app.js,假设您将此代码放入app.js文件中

var express = require('express');
var app = express();
app.get('/api/data', function(req, res) {
  // you stuff goes here, getJSON function, etc
  // ...
  // ...
  var sample = {id: 5, name: 'test'};
  res.json(sample);
});
app.listen(process.env.PORT || 3000);

您的客户端代码将需要调用API,这可以通过jQuery完成,例如这个

$.get('http://localhost:3000/api/data', function(data){
  // handle that 'data' on the client side here
  // ...
  // ...
});

最新更新