Superagent的.get方法无法正确读取文件数据生成有效API请求
问题解决:Superagent调用Dogs CEO API时品种识别失败
你的问题根源在于从TXT文件读取的data字符串包含隐藏的换行符。虽然console.log(data)看起来只输出了"hound",但实际字符串末尾带有\n(或\r\n,取决于操作系统),拼接URL时会把链接拆成两行,导致API无法识别正确的品种名称。
解决方案
在使用data拼接URL前,调用trim()方法去除字符串两端的空白字符(包括换行、空格、制表符等):
const fs = require('fs') const superagent = require('superagent') fs.readFile(`${__dirname}/dog.txt`, 'utf8',(err, data) => { // 去除字符串两端的空白字符(含换行符) const breed = data.trim() console.log(breed) superagent .get(`https://dog.ceo/api/breed/${breed}/images/random`) .end((err, res) => { if (err) return console.error(err.message) console.log(res.body.message) }) })
验证问题的方法
你可以通过打印JSON.stringify(data)来查看字符串的实际内容,比如:
console.log(JSON.stringify(data)) // 会输出 "hound\n" 或者 "hound\r\n",而不是 "hound"
这样修改后,拼接出的URL会是完整的一行,API就能正确识别品种并返回图片链接了。
内容的提问来源于stack exchange,提问作者joshua rizek
相关产品推荐
相关产品推荐

