Не удается прочитать свойство «заменить» неопределенного на изображении?

#node.js

Вопрос:

Я создаю конечную точку POST для загрузки изображения в AWS S3, но я получил ошибку, когда попытался использовать для замены информации об изображении, кроме данных base64

 const imageAWS = catchAsyncErrors(async (req, res) => {
  const { image } = req.body
  // Prepare the image
  const base64Data = new Buffer.from(
    image.replace(/^data:image/w ;base64,/, ''),
    'base64'
  )

  const type = image.split(';')[0].split('/')[1]

  // Image params
  const params = {
    Bucket: '',
    Key: `S{nanoid()}.${type}`,
    Body: base64Data,
    ACL: 'public-read',
    ContentEncoding: 'base64',
    ContentType: `image/${type}`,
  }

  // Upload to S3
  S3.upload(params, (err, data) => {
    if (err) {
      return next(new ErrorHandler('Upload Failed', 400))
    }
    // log
    console.log(data)
  })

  res.status(200).json({
    success: true,
  })
})
 

Сообщение об ошибке Почтальон

 {
    "success": false,
    "error": {
        "statusCode": 500,
        "message": "Cannot read property 'replace' of undefined"
    },
    "message": "Cannot read property 'replace' of undefined"
}
 

Комментарии:

1. req.body существует, но req.body.image не существует. Вы посмотрели, что на самом деле возвращает запрос?

2. @LukeBriggs да, я создаю ключ изображения, используя данные формы на почтальоне. когда я верну свое тело "----------------------------221091136581883415727306rnContent-Disposition: form-data; name="image"; filename="sa.jpeg"rnContent-Type: image/jpeg"

3. если req.body это только эта строка, строки не имеют свойства, называемого image так, что попытка получить aString.image будет неопределенной. Что вы собираетесь const { image } = req.body делать?

Ответ №1:

Весьма вероятно, что req.body это не объект, поэтому свойство image from const { image } = req.body не определено.

Вы можете использовать следующий метод для преобразования req.body в объект, если это JSON: const { image } = JSON.parse(req.body)