这个Node.js代码段有什么问题?

j9per5c4  于 2023-01-08  发布在  Node.js
关注(0)|答案(1)|浏览(157)

我正在学习node.js,课程说下面的代码片段有问题。

const fs = require('fs');
const http = require('http');
 
const server = http.createServer((req, res) => {
  if (req.headers['x-secret'] != process.env.SECRET )
    res.writeHead(403).end('Secret incorrect');
 
  let body = [];
  req.on('data', chunk => {
    body.push(chunk);
  });
  req.on('end', () => {
    body = JSON.parse(Buffer.concat(body).toString());
    fs.writeFileSync(body.filename, body.file);
    res.writeHead(200).end('OK');
  });
});
 
server.listen(7654);

我发现的可能情况包括:

  • 应该使用https而不是http(安全服务器)
  • Res.writeHead.end是无效语法。Res.writeHead和res.end

应单独编写

  • 应使用fs.writeFile(),而不是异步版本
  • 没有内置故障保护(?)

然而,这门课似乎在说,有一个大错误,我真的找不到。
救命啊!
谢啦,谢啦

bihw5rsg

bihw5rsg1#

Buffer.concat(body).toString()不是有效的JSON,因此您无法解析它。如果您记录它,您将收到什么

----------------------------118769234111712879210320
Content-Disposition: form-data; name="data"; filename="test.json"
Content-Type: application/json

{
    "test": "156"
}
----------------------------118769234111712879210320--

像这样

相关问题