簡體   English   中英

使用Node.js的getaddrinfo ENOTFOUND http.request()

[英]getaddrinfo ENOTFOUND with Node.js http.request()

我正在嘗試按照這里的badgekit教程https://github.com/mozilla/badgekit-api/wiki/Using-BadgeKit-API#references

但是,我得到的錯誤是我的語法出現節點錯誤(我認為)。 這就是我在RetrieveBadgeData.js文件中所擁有的

var http = require("http");
var jws = require('jws');

var claimData = {
    header: { typ: 'JWT', alg: 'HS256' },
    payload: {
        key: 'mastersecret',
        exp: Date.now() + (1000 * 60),
        method: 'GET',
        path: '/systems'
    },
    secret: 'mastersecret'
};
var requestOptions = {
    host: 'http://192.168.1.59:8080',
    path: '/systems',
    method: 'GET',
    headers: { 'Authorization': 'JWT token="' + jws.sign(claimData) + '"' }
};

var apiRequest = http.request(requestOptions, function (apiResult) {
    apiResult.on('data', function (badgeData) {
        //process badgeData

    });
});

如果瀏覽到192.168.1.59:8080,如果節點API正在運行,我會得到您應該返回的信息。但是,當我運行節點RetrieveBadgeData.js(執行上面的代碼)時,出現此錯誤。

events.js:72
    throw er; // unhandled 'error' event
          ^
Error: getaddrinfo ENOTFOUND
    at errnoException (dns.js:37:11)
    at Object.onanswer [as oncomplete] (dns.js:124:16)

有任何想法嗎?

編輯我也嘗試過,這給了我同樣的錯誤

var requestOptions = {
    hostname: 'http://192.168.1.59'
    , port: 8080
    , path: '/systems/badgekit/badges'
    , method: 'GET'
    , headers: { 'Authorization': 'JWT token="' + jws.sign(claimData) + '"' }
};

問題是您如何指定主機:

host: 'http://192.168.1.59:8080'

使用此代替:

hostname: '192.168.1.59`,
port: 8080

http://是協議,而不是主機。 您收到的錯誤是Node.js無法解析您提供的主機名。 Node.js文檔還建議使用hostname優先於host

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM