使用Node.js获取请求时出现嵌套HTTP错误

使用Node.js获取请求时出现嵌套HTTP错误,node.js,http,Node.js,Http,我遇到了一个问题,当涉及到解决这些问题时,我感到自己的深度不够 第一,我对Node的理解是非常新/不成熟的,第二,我对http的理解不是最强的 所以在这里,它向社区寻求一些有希望的帮助 我已经检查了我的代码,首先通过使用静态类型的对象数组来抽象代码的意图,然后在浏览器端运行它,以确保在缺少http.get请求的情况下,所有代码都按预期工作 我已经将相同的代码移到了节点服务器端,并使用我在本地使用的相同抽象数据集成功地运行了它,并且所有代码都在主端口3030实例上运行良好 然后我接着介绍了一个ht

我遇到了一个问题,当涉及到解决这些问题时,我感到自己的深度不够

第一,我对Node的理解是非常新/不成熟的,第二,我对http的理解不是最强的

所以在这里,它向社区寻求一些有希望的帮助

我已经检查了我的代码,首先通过使用静态类型的对象数组来抽象代码的意图,然后在浏览器端运行它,以确保在缺少http.get请求的情况下,所有代码都按预期工作

我已经将相同的代码移到了节点服务器端,并使用我在本地使用的相同抽象数据集成功地运行了它,并且所有代码都在主端口3030实例上运行良好

然后我接着介绍了一个http.get,它在多个方面都有点复杂

说明:

我所做的一切都发生在我的本地机器上,用于测试/非生产状态开发

在这种情况下,我最终在端口3030上执行来自本地计算机的http.get请求,并调用另一个节点实例,该节点实例运行在另一个cmd.exe实例上,侦听端口3000

我已经单独用浏览器测试了3000,它的工作情况与预期相符:

我启动chrome,转到http://:3000/bend/1,它返回我为它设置的内容,它对URL中提供的最后一个值运行SQL select语句,并将JSON.stringifyobj返回到浏览器-参见下图

然后我将浏览器指向http://:3030并获取:

Server Started on Port 3030...
TypeError: listener must be a function
    at TypeError (native)
    at ClientRequest.once (events.js:190:11)
    at new ClientRequest (_http_client.js:93:10)
    at Object.exports.request (http.js:49:10)
    at Object.exports.get (http.js:53:21)
    at getBendAndTypeByBend (<<MyPort3030Root>>\program.js:26:9)
    at p_processBends (<<MyPort3030Root>>\program.js:58:14)
    at doAll (<<MyPort3030Root>>\program.js:74:3)
    at <<MyPort3030Root>>\program.js:82:2
    at Layer.handle [as handle_request] (<<MyPort3030Root>>\node_modules\express\lib\router\layer.js:95:5)
我很乐意展示代码,但我不确定解决问题真正需要哪个部分,因为当没有HTTP.GET请求时,它们各自都可以正常运行

我只是不知道现在该怎么办,我希望这里的人能帮助我理解从哪里开始理解这个问题,但最终如何解决它

我知道这可能要求很多,但我真的觉得在这一点上卡住了,因为在我把它们连接在一起之前,事情似乎都在运转

以下是从端口3030调用的可疑代码段

下面是名为run@PORT:3000的代码


看起来你的问题可能在这一行

http.get('http://localhost:3000/bend/'+bendStr, 'utf-8', function(err, res) {
根据文档-,http.get的第二个参数应该是一个函数。在您的例子中,它是第三个参数,节点似乎在堆栈跟踪中抱怨这个参数


尝试删除第二个参数utf-8,您应该能够克服该错误。

读到这篇文章让我感觉自己又回到了学校。缩小范围。。然后从发生错误的脚本中发布一些代码。@Mr.Phoenix好的,我会发布双方的代码,这样你就可以看到发生了什么。嗯……如果你想从一台服务器向另一个try-request模块发出http get请求,那么这两个脚本都有很多错误,这会让事情变得更简单。还可以尝试阅读一些express教程,并始终使用文档。NodeJS和http模块并不是不成熟或脆弱的。@Phoenix先生,我相信你误解了我。我说我对这些的理解/知识是不成熟的/周,而不是他们的个人能力。至于在网上查看文档,这也是我来这里的原因。我很难让他们适应我的处境。至于我附加的代码片段,我试图简明扼要地说明问题发生的地方,但回想起来,这些片段毫无意义,因此我将重新发布我的完整代码集。很好,我没有看到它。很可能是因为我混合了各种方法。
var express = require('express');
var sql = require('sqlite3');

app = express();

app.get('/bend/:id', function(req, res){
    var db = new sql.Database('<mySQLite3Path>/rebarFabTypes.db');
    db.get("SELECT bend, type FROM fabtype WHERE bend = '"+req.params.id+"'", function(err, row) {
        if (typeof row !== 'undefined') {
            console.log(row.type);
            res.end(JSON.stringify({"row" : row.type}));
        } else {
            res.end(JSON.stringify({"row" : "UNKNOWN"}));
        }
    });
    db.close();
});

app.listen(3000, function(err, resp){
    console.log('Server Started on Port 3000...');
});
http.get('http://localhost:3000/bend/'+bendStr, 'utf-8', function(err, res) {