1

我在 Node.js 的 Express 服务器上创建了一个将图像旋转 90 度的函数。它在第一次被调用时起作用,但不是第二次。如果我重新启动服务器,那么它将再次工作一次,所以如果我重新启动服务器 3 次,那么我可以一直旋转图像。

Product.findById 是一个 mongoose 查询,用于查找从前端请求中指定的图像 ID 的图像名称。

在第一次和第二次尝试中,第 7 行的 console.log 返回正确的植物路径/名称,并且没有抛出错误。响应状态是 200“图像旋转”,两次也是


router.patch("/rotate/:image", (req, res, next) => {
  let image = ""
  Product.findById(req.params.image)
  .exec()
  .then(result => {
    image = './uploads/resized/'+result.image
    console.log("image", image)

    sharp(image)
    .rotate(90)
    .withMetadata()
    .toBuffer(function(err, buffer) {
      if(err) throw err
      fs.writeFile(image, buffer, function() {
        res.status(200).json("image rotated")
      });
    })
  })
  .catch(err => {res.status(400).json("invalid img id")
    console.log(err)})
  })

预期输出是在每个 http 请求上旋转 90 度的图像,但实际输出只是在第一个 http 请求上旋转 90 度的图像。

4

1 回答 1

1

导入sharp模块后尝试禁用缓存写入以下行:

sharp.cache(false);
于 2019-05-11T14:33:17.113 回答