为什么 delete 方法在位置 0 错误中给我意外的标记 < in JSON?

Why the delete method giving me unexpected token < in JSON at position 0 error?

我在尝试删除数据时遇到错误, 我在邮递员上试过了,它工作正常,但浏览器给我这个错误:

DELETE http://localhost:5000/items/[object%20Object] 404 (Not Found)
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

客户端:

<button onClick={() => handleDeleteItem(_id)}>DELETE BUTTON</button>
const handleDeleteItem = id => {
        const deletion = window.confirm('Do you really want to delete the item?');
        if(deletion){
            const url = `http://localhost:5000/items/${id}`;
            fetch(url, {
                method: 'DELETE',
                headers: {
                    'content-type': 'application/json'
                },
            })
            .then(res=>res.json())
            .then(data =>{
                console.log(data);
            })
        }
    }

服务器端:

app.post('/items/:id', async(req, res) =>{
            const id = req.params.id;
            const query = {_id: ObjectId(id)};
            const result = await itemsCollection.deleteOne(query);
            res.send(result);
        });

您有 'content-type': 'application/json' 但没有将 JSON 放入主体中,因此 JSON 解析中间件正在尝试解析空主体并抛出异常。

不要谎报您发送的内容。


旁白:

  • app.post 查找 POST 请求,但您正在发出删除请求
  • id 正在转换为 [object%20Object] 因此它是一个对象而不是您期望的字符串或数字