使用nodejs进行POST请求并表达500错误

问题描述 投票:0回答:1

所以我正在构建一个完整的堆栈应用程序,我的 get 方法工作正常,我的 ui 可以毫无问题地访问它,但现在我在尝试写回服务器时遇到 POST 请求问题(这是在内部 Intranet 上运行) 。当我向 Thunderclient 抛出正确的 url 时,出现 500 内部错误和大量信息转储

TypeError:无法解构“req.body”的属性“firstName”,因为它未定义。
   位于 C:\CFusionMX7\wwwroot\TimeCard\server.js:65:13
   位于 Layer.handle [作为 handle_request] (C :\CFusionMX7\wwwroot\TimeCard ode_modules xpress\lib 外层\layer.js:95:5)
   在下一个 (C 这样的情况持续了大约三倍的长度。 我现在已经尝试编写并重写了几次。我收到 404 not found,我意识到我的 url 不正确,当您使用 Thunderclient 获取 POST 请求时,您实际上必须从下拉列表中选择 POST(doh!) 无论如何,我的服务器端代码如下。

apiRouter.post('/create-timecard', (req, res) => { const { firstName, lastName, employeeId } = req.body; const today = new Date().toISOString().split('T')[0]; const timeCardFileName = `${today}_${employeeId}.txt`; // Write the content of the time card file fs.writeFile(`./TimeCard/database/${timeCardFileName}`, '', (err) => { if (err) { console.error('Error creating time card:', err); res.status(500).send('Error creating time card'); return; } res.send({ message: 'Time card created successfully', timeCardFileName }); }); });
node.js express
1个回答
0
投票

您尝试解析

const { firstName, lastName, employeeId } = req.body
,但
req.body
找不到
firstName
。请求主体是一个简单的字符串。因此存在主体 (JSON) 解析器。我认为如果你在尝试将主体分解为单个变量之前将其解析为 JSON 或 JS 对象,就可以解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.