javascript - 使用 Axios 发布 JSON 的问题(“传递的值不是字符串或 JSON 对象”)
问题描述
编辑:已解决,在下面发布详细信息作为答案......非常愚蠢的用户错误
我正在尝试为 SteelSeries Gamesense 编写简单的插件,以在 GameDAC 屏幕中显示来自 iTunes 的当前播放歌曲。基本上,引擎通过提供的服务器工作,监听带有 JSON 正文的发布请求。我一直试图让我的请求工作很长一段时间,但没有成功。
我在 Postman 上测试了请求,它应该按预期工作,所以问题可能出在语法上。
const axios = require('axios');
const coreProps = require(process.env.ProgramData + '/SteelSeries/SteelSeries Engine 3/coreProps.json');
const url = JSON.stringify(coreProps['address']);
axios.defaults.baseURL = 'http://' + url.replace(/"/g,'');
axios.defaults.headers['post'] = {'Content-Type': 'application/json'};
console.log(axios.defaults.headers);
function bind_itunes() {
const data = {
"game": "ITUNES",
"event": "NOWPLAYING",
"handlers": [
{
"device-type": "screened",
"zone": "one",
"mode": "screen",
"datas": [
{
"has-text": true,
"context-frame-key": "songname"
}
]
}
]
};
axios.post('game_event', JSON.stringify(data))
.then((res) => {
console.log(res)
}).catch((error) => {
console.error(error)
})
}
bind_itunes();
代码因来自 Axios 的长错误块而失败并出现错误
"data: { error: 'passed value not string or JSON object' } }"
完整的错误日志(pastebin,因为它很长):https ://pastebin.com/aLguKQ2C
邮递员截图
解决方案
下次在提问之前,我还会确保对 API 端点进行三次检查。
正如在比较屏幕截图和代码时看到的那样,我轮询了错误的端点(game_event 而不是 bind_game_event),这很明显会导致请求错误。
经过数小时的思考后修复了该问题。
感谢所有尝试并抱歉打扰的人的帮助。
推荐阅读
- c++ - 有没有像 BigInteger 这样的变量,但作为浮点数?
- solr - SolrCloud 异常将文档 id 写入索引;可能的分析错误
- abap - 未从 EQUI 中选择记录
- javascript - Realm.js 查询字符串属性列表
- ruby-on-rails - Javascript:Firefox 中显示的日期无效
- python - 关闭交互式 python 会话时结束非守护线程
- ios - UITableView 单元格折叠动画看起来很糟糕
- php - 从 localhost wordpress 更改为 live site wordpress
- php - 双三元的意外结果
- javascript - 找不到 Laravel 文件管理器 url?