问:我正在研究node.js基础教程,并使该应用程序正常运行。我今天尝试将其启动,并在http请求上不断收到301错误。
我用控制台登录了用户名和url,它们看起来似乎很好,所以我有些困惑。我注意到,当我将URL放入浏览器时,它会重定向到https。我认为这可能是原因,但我不确定100%。还有其他人遇到此错误吗?谢谢 !
代码如下:
/ * app.js * /
var profile = require(“ ./ profile”);
var users = process.argv.slice(2);
users.forEach(profile.get);
/*profile.js*/
var http = require(“ http”);
//打印出消息
函数printMessage(username,badgeCount,points){
var message =用户名+“具有” + badgeCount +“总徽章以及Java语言中的” + points +“点。”;
console.log(消息);
}
//打印出错误
函数printError(error){
console.error(error.message);
}
function get(username){
//连接API URL
var url =“ http://teamtreehouse.com/” +用户名+“ .json”;
console.log(“ username:”,用户名);
var request = http.get(URL,function(response){
var body =“”; //添加到此对象中
response.on('data',function(chunk){
body + = chunk; // concatenates
});
response.on('end',function(){
if(response.statusCode === 200){
try {
//解析数据
var profile = JSON.parse(body);
//打印数据
printMessage(username,profile .badges.length,profile.points.JavaScript)
} catch(error){
//解析错误
printError(错误);
}
} else {
//状态代码错误
printError({message:“获取“ +用户名+”的配置文件时出错。(” + http.STATUS_CODES [response.statusCode] +“)”));
}
});
});
//连接错误器
request.on(“ error”,printError);
}
module.exports.get = get;
然后我运行类似的东西node app.js chalkers并得到There was an error getting a profile for chalkers. (Moved Permanently)
答:现在到处都使用https。您需要将require更改为https并将地址更改为https。
/*profile.js*/
var http = require (“ https” ); //此处
var url = “ https://teamtreehouse.com/” +用户名+ “ .json” ; // 和这里
如果还没有的话,应该在课程中将其添加到老师的笔记中:)