簡體   English   中英

我在節點js API中得到ERR_STREAM_WRITE_AFTER_END。 如何解決這個問題?

[英]I am getting ERR_STREAM_WRITE_AFTER_END in node js api. How to fix this issue?

我從ui中點擊上傳文件api時遇到以下問題。 我正在從react js命中節點js api,然后從node js命中公共api。 在此處輸入圖片說明

節點版本:-10.15.3

npm版本:-6.4.1

API

router.route("/uploadLocaleFile").post(function(req, res, next) {
  req.on("data", data => {
    uploadFile(req, data, res);
  });
});

function uploadFile(req, data, res) {
  request
    .post({
      uri: `${notebookPath}/localfile/${req.query.experimentId}`,
      body: data,
      headers: {
        "Content-Type": req.headers["content-type"],
        Authorization: req.headers["authorization"]
      }
    })
    .pipe(res);
}

試試這個代碼

router.route("/uploadLocaleFile").post(function(req, res, next) {
  const chunks = [];
  req
    .on('data', data => chunks.push(data))
    .on("end", _ => uploadFile(req, Buffer.concat(chunks), res)
  ;
});

function uploadFile(req, data, res) {
  request
    .post({
      uri: `${notebookPath}/localfile/${req.query.experimentId}`,
      body: data,
      headers: {
        "Content-Type": req.headers["content-type"],
        Authorization: req.headers["authorization"]
      }
    })
    .pipe(res);
}

您可能需要嘗試@Yaroslav Gaponov解決方案。

您的問題是.pipe(res)在每個data事件上都觸發。 到第二個data事件發生時, res流已經關閉。

@Yaroslav Gaponov所做的是,在每個data事件中,他將傳入的緩沖區存儲到數組中。 當流完成時,將發出end事件,然后才允許您對res進行1次寫入,即uploadFile中.pipe(res)

您也可以嘗試request一個管線管道,如下所示:

req.pipe(請求(your_options))。管(RES)

暫無
暫無

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

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