2014-09-30 29 views
0

我試圖按照這裏https://github.com/mozilla/badgekit-api/wiki/Using-BadgeKit-API#references用Node.js的http.request()

的badgekit教程的getaddrinfo ENOTFOUND但是,我得到的錯誤是我的語法(我認爲)節點錯誤。這是我在文件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) + '"' } 
}; 
+0

關於你的編輯,它應該是'host:'192.168.1.59''不是'hostname:'http:// 192.168.1.59''。 – mscdex 2014-09-30 19:08:51

回答

2

問題是你是如何指定主機:

host: 'http://192.168.1.59:8080' 

使用這個:

hostname: '192.168.1.59`, 
port: 8080 

The http://是協議,而不是主機。您收到的錯誤是Node.js無法解析您提供的主機名。 Node.js docs也暗示hostname的使用優於host

+0

我曾考慮過這個問題並嘗試過。切換到這仍然給我同樣的錯誤。 VAR requestOptions = { 主機名: 'http://192.168.1.59' ,端口:8080 ,路徑: '/系統/ badgekit /徽章' ,方法: 'GET' ,標頭:{ '授權': 'JWT token =''+ jws.sign(claimData)+'''} }; – 2014-09-30 19:06:41

+0

@MichaelAndrews根據你的編輯,你仍然有'http://'。刪除。 – Brad 2014-09-30 20:35:37

+0

我認爲這是因爲它現在就像它正在運行一樣懸掛在那裏。謝謝! – 2014-09-30 21:16:04

相關問題