Javascript 使用Axios发布JSON时出现问题(';传递的值不是字符串或JSON对象';)

Javascript 使用Axios发布JSON时出现问题(';传递的值不是字符串或JSON对象';),javascript,node.js,json,axios,Javascript,Node.js,Json,Axios,编辑:已解决,将详细信息发布在下面作为答案。。。相当愚蠢的用户错误 我正在尝试为SteelSeries Gamesense编写一个简单的插件,以便在GameDAC屏幕上显示当前正在播放的iTunes歌曲。基本上,引擎通过提供的服务器使用JSON主体监听post请求来工作。我一直在努力让我的请求生效,但没有成功 我在Postman上测试了这个请求,它应该可以正常工作,所以问题可能出在语法的某个地方 const axios = require('axios'); const coreProps

编辑:已解决,将详细信息发布在下面作为答案。。。相当愚蠢的用户错误

我正在尝试为SteelSeries Gamesense编写一个简单的插件,以便在GameDAC屏幕上显示当前正在播放的iTunes歌曲。基本上,引擎通过提供的服务器使用JSON主体监听post请求来工作。我一直在努力让我的请求生效,但没有成功

我在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' } }"
完整的错误日志(因为它很长,所以是粘贴的):

邮递员截图


我会建议与@Phil一样:在使用
axios.post
时不要将有效负载字符串化。Axios文档中的示例可能很有用:。我看了一下你的截图,似乎你得到了一个成功的回复,状态代码是200。您是否仍有问题,或者对您的请求的响应是否不同?

下次提问之前,我还将确保对API端点进行三次检查

在比较屏幕截图和代码时可以看到,我在错误的端点上进行了轮询(game_事件而不是bind_game_事件),这显然会导致请求错误

经过数小时的思考,修复了该问题


感谢您对所有尝试过并且很抱歉打扰您的人的帮助。

您为什么在URL上使用
JSON.stringify()
?你能分享一些在Postman中工作的截图吗?仅供参考,Axios的默认内容类型已经是JSON了。您可以使用
axios.post('game_event',data)
忘记提到@Phil,在没有stringify()的情况下遇到同样的问题,并决定将其添加到那里。邮递员截图:。下划线应该无关紧要,因为它是将来唯一选择的标识符,当有文本通过绑定到引擎的事件发送时。诉诸默认标题也有相同的结果Postman正在发布到
bind_game_event
,但您的代码正在发布到
game_event
,所以它们肯定不是相同的。。。一秒钟前我注意到了自己。无论如何,谢谢你的回答,下次我会采取额外的步骤来消除这样的打字错误。请随意发布为答案,这样我就可以标记为已解决。使用Postman,我得到了成功的响应,但当在节点运行应用程序中使用上面的代码时,当请求完全相同时,我仍然得到状态代码400