Передача ошибки от Nodejs, но не получение правильного - PullRequest
1 голос
/ 21 января 2020

Вот мой код, где я получаю загружаемое видео и проверяю его расширение, когда расширение не mp4. Я хочу вернуть оператор else и передать ошибку с сервера, но когда я получаю эту ошибку и когда я console.log эта ошибка означает, что сервер не отвечает. 505 ошибка, с которой он работает нормально, когда расширение равно mp4.

const videoStorage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, config.videoStorage);
  },
  filename: function (req, videoFile, cb) {
    if (path.extension(videoFile.originalname) !== '.mp4') {
      const name = `${videoFile
        .fieldname}-${Date
        .now()}_${
      videoFile.originalname}`;
      return cb(null, name.replace(/\s/g, ""));
    } else {
      return cb(new Error("sorry"));
    }
  }
});

MediaService
  .uploadVideo(formData, this.getUploadProgress)
  .then(data => {
    let order = {
      ...this.state.project
    };
    if (!order.project) {
      order = {
        project: {
          mediaId: data
        }
      };
    }
    order.project.mediaId = data;
    console.log("videoid added ===", order);
    this.setState({uploading: false, videoId: data, isValid: true, project: order});

    message.success("Video uploaded successfully");
  })
  .catch(error => {
    message.error(error);
    this.setState({message: error, uploading: false});
  });
};

1 Ответ

0 голосов
/ 24 января 2020

Вместо того, чтобы выдавать ошибку, вы можете передать флаг следующим образом:

return cb({success:false,message:"false"});

Это вы можете получить доступ к обещанию успеха загрузчика.

Потому что, когда вы говорите new Error(), я Я думаю, что он выдаст ошибку на стороне сервера и не сможет отправить ответ клиенту. Вот почему вы не получаете ответ на стороне клиента.

...