【问题标题】:TypeError: Cannot set property 'id' of undefinedTypeError:无法设置未定义的属性“id”
【发布时间】:2020-07-07 22:21:32
【问题描述】:

尝试学习一些 JS Express 并开始构建一个简单的解决方案,以允许我进行 GET / DELETE / POST / PUT 等操作。但 POST 路由器有问题。这是路由器:-

router.post('/', (req, res, next) => {
    const newObject = addToDB(req.body);
    res.status(201).send(newObject);
});

然后我就有了函数

const addToDB = (newObject) => {
    newObject.id = `1`;
    objectsArray.push(newObject);
    return newObject;
}

ObjectsArray 已定义并在 GET 路由器上工作,但在 POST 路由器上,当我测试这个时,我收到错误 TypeError: Cannot set property 'id' of undefined。该代码似乎与代码学院的代码解决方案几乎相同,所以我不明白我是如何得到这个错误的。使用节点运行服务器并进行测试。任何想法。

【问题讨论】:

标签: javascript node.js express


【解决方案1】:

从您上面的代码来看,req.body 似乎是未定义的。您应该设置 body-parser 以填充 req.body。您可以这样设置:

  1. 通过在命令行中运行以下命令来安装 body-parser: npm install body-parser

  2. 然后在您的路由之前添加以下代码行以确保将请求参数填充到req.body

var bodyParser = require('body-parser')
var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

希望这会有所帮助。

请注意,上面的 sn-p 位于 app.js 或您称为 Web 服务器的入口文件的任何名称中。

【讨论】:

    猜你喜欢
    • 2015-09-09
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 2022-08-16
    • 2018-08-13
    相关资源
    最近更新 更多