【问题标题】:what is wrong with my simple node.js function?我的简单 node.js 函数有什么问题?
【发布时间】:2013-01-05 23:50:05
【问题描述】:

不确定我在这里做错了什么?

错误:

/Users/user/node/app.js:3
makeRequest("Here's looking at you, kid");
^
TypeError: object is not a function
    at Object.<anonymous> (/Users/user/node/app.js:3:1)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

app.js

var makeRequest = require('./make_request');

makeRequest("Here's looking at you, kid");
makeRequest("Hello, this is dog");

make_request.js

var http = require('http');

var makeRequest = function(message) {

    //var message = "Here's looking at you, kid.";
    var options = {
        host: 'localhost', port:8080, path: '/', method: 'POST'
    }

    var request = http.request(options, function(response) {
        response.on('data', function(data) {
            console.log(data);
        });
    });
    request.write(message);
    request.end();
};

exports = makeRequest;

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    要将function 作为模块对象返回,请将其设置为module.exports

    module.exports = makeRequest;
    

    exports 只是module.exports 的方便副本。

    【讨论】:

    • 更好但仍然:` events.js:71 throw arguments[1]; // 未处理的“错误”事件 ^ 错误:在 Object.afterConnect [as oncomplete] (net.js:761:19) 处的 errnoException (net.js:770:11) 处连接 ECONNREFUSED`
    • 尝试了那些但类似的错误:events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: getaddrinfo ENOENT at errnoException (dns.js:31:11) at Object.onanswer [as oncomplete] (dns.js:123:16)
    • 我真的不知道。这是我正在尝试做的node.js 教程,所以我对它非常基础。不过,地址看起来确实有某种错误。
    • 我发现了这个groups.google.com/forum/?fromgroups=#!topic/nodejs/kL7dZrUO89M 所以这是一些连接问题,但不知道如何诊断或修复它。
    • 不工作,但修复了该特定错误,因此我将为新错误提出一个新问题。
    【解决方案2】:

    你需要调用这个函数。

    makeRequest.makeRequest("Your message");
    

    您还可以通过以下方式简化代码:

    module.exports.makeRequest = function(message) {
        //... 
    };
    

    【讨论】:

    • 试过但得到了这个:/Users/user/node/app.js:3 makeRequest.makeRequest("Here's looking at you, kid"); ^ TypeError: Object #&lt;Object&gt; has no method 'makeRequest' at Object.&lt;anonymous&gt; (/Users/user/node/app.js:3:13) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9)
    【解决方案3】:

    我相信您正在 app.js 的第一行导入命名空间。这个命名空间是 make_request。 您还试图调用一个名为 makeRequest 的函数,该函数位于命名空间 make_request 中。 试试这个:

    makeRequest.makeRequest("message"); on line 3 and 4 of app.js
    

    【讨论】:

    • 试过但得到了这个:/Users/user/node/app.js:3 makeRequest.makeRequest("Here's looking at you, kid"); ^ TypeError: Object #&lt;Object&gt; has no method 'makeRequest' at Object.&lt;anonymous&gt; (/Users/user/node/app.js:3:13) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9)
    • 是的,也许我应该在这个超级基础教程之前再做一些教程?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多