簡體   English   中英

獲取響應時發生錯誤,如果nodejs服務器在某些延遲后發送響應

[英]error in getting the response, if nodejs server send response after some delay

我正在嘗試上傳圖像,然后nodeJS服務器將該圖像文件夾的路徑發送回作為響應。

但是當我在執行某些任務后發送響應時,在角度側沒有任何反應。

這是我的component.ts文件。

uploadImage() {
    const formData = new FormData();
    formData.append('photo', this.image);
    const obj$ = this.userService.uploadData(formData); 
    obj$.subscribe(data => {
      console.log(data);   //// nothing happening.
      if (data.success) {
        this.uploadForm.patchValue({
          document: data.url
        });
      }
    });
  }

和我的service.ts

uploadData (uploadImage) {
   return this.http.post<UploadPhoto>('/user/upload', uploadImage);
  }

和我的app.js

router.post('/upload' ,upload.single('photo'), (req,res) => {

  console.log(req.file);
  const body = req.file;

  cloudinary.uploader.upload(body.path, (err, result) => {
    if (err) {
      console.log(err);
      return;
    }
    console.log(result);
    res.status(200).json({
      url: result.url,
      success: true
    });
  });
});

但是當我發送響應而不執行任何任務時,它的工作原理就像

router.post('/upload' ,upload.single('photo'), (req,res) => {

  console.log(req.file);
  const body = req.file;

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

});

我不知道為什么會這樣。

請有人幫我。

當您的上傳器中發生錯誤時,您會將錯誤返回到控制台,然后結束執行。 如果異步方法中有錯誤,則必須將其傳遞給next()函數,以便express可以處理它。

router.post('/upload' ,upload.single('photo'), (req,res, next) => {

  console.log(req.file);
  const body = req.file;

  cloudinary.uploader.upload(body.path, (err, result) => {
    if (err) {
      console.log(err);
      next(err);
    }
    else {
      console.log(result);
      res.status(200).json({ url: result.url, success: true });
    }
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM