【问题标题】:POST Request failed with status code 500 at IncomingMessage.handleStreamEnd Express.jsIncomingMessage.handleStreamEnd Express.js 的 POST 请求失败,状态码为 500
【发布时间】:2022-01-06 07:04:49
【问题描述】:

我正在通过 JS 为 CRUD 应用程序创建 HTTP 请求。此请求的目的是在新用户帐户的登录数据库中简单地创建一条记录。当我尝试请求这个时,我收到一个 500 错误:

我在一个愚蠢的小测试脚本中提出请求:

const axios = require("axios");

var http = axios.create({
    baseURL: "http://localhost:8080/",
    headers: {
        "Content-type": "application/json"
    }
});

class UserDataService {
    getAll(){
        return http.get("/users");
    }

    get(id){
        return http.get(`/users/${id}`);
    }

    create(data){
        return http.post("/users", data);
    }

    update(id, data){
        return http.put(`/users/${id}`, data);
    }

    delete(id){
        return http.delete(`/users/${id}`);
    }

    findByUsername(username){
        return http.get(`/users?username=${username}`);
    }

    authenticateLogin(data){
        console.log(data);
        return http.get("/login");
    }
}

function main(){
    const uds = new UserDataService();
    // http://localhost:8080'/api/users
    uds.create({
        username: "root",
        email: "root@enron.com",
        password: "password"
    }).catch(err => {
        console.log(err);
    });
}

main();

这被路由到users.routes.js:

router.post("/users", users.create);

然后发送到users.controller.js:

exports.create = (req, res) => {
    console.log("User being created");
    const user = {
        username: req.body.username,
        email: req.body.email,
        password: crypto.createHash("md5").update(req.body.password).digest("hex")
    };
    Users.create(user)
        .then(data => {
            res.send(data)
        })
        .catch(err => {
            res.status(500).send({
                message: err.message || "Error occurred when creating a user"
            })
        });
};

这是我的错误:

Error: Request failed with status code 500
    at createError (/home/amicharski/WebstormProjects/profrec/node_modules/axios/lib/core/createError.js:16:15)
    at settle (/home/amicharski/WebstormProjects/profrec/node_modules/axios/lib/core/settle.js:17:12)
    at IncomingMessage.handleStreamEnd (/home/amicharski/WebstormProjects/profrec/node_modules/axios/lib/adapters/http.js:293:11)
    at IncomingMessage.emit (node:events:402:35)
    at endReadableNT (node:internal/streams/readable:1343:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {

【问题讨论】:

  • 好像是服务器错误,你在后端看到什么了吗?
  • 我看到的只是我发布的错误
  • 尝试使用邮递员查看后端是否正常工作。

标签: javascript express


【解决方案1】:

我不确定这是如何工作的,但我在调用 API 时在用户名、电子邮件和密码字段名称周围加上了引号:

function main(){
    const uds = new UserDataService();
    // http://localhost:8080'/api/users
    uds.create({
        "username": "root",
        "email": "root@enron.com",
        "password": "password"
    }).catch(err => {
        console.log(err);
    });
}

main();

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 2020-05-29
    • 2019-11-27
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多