Koa.jsとストリーミング。エラーをどのように処理しますか?

ステパン・クズミン

誰かがkoa.jsとストリームを操作しますか?

この例を考えてみましょう

const fs = require('fs');
const Koa = require('koa');

const app = new Koa();

app.use(async (ctx) => {
  ctx.body = fs.createReadStream('really-large-file');
});

app.listen(4000);

ユーザーがリクエストを中止すると、どちらかが表示されます

  Error: read ECONNRESET
      at _errnoException (util.js:1024:11)
      at TCP.onread (net.js:618:25)

または

  Error: write EPIPE
      at _errnoException (util.js:1024:11)
      at WriteWrap.afterWrite [as oncomplete] (net.js:870:14)

このタイプのエラーを処理する適切な方法は何ですか?

PSリクエストがExpressで中止された後、エラーは発生しません

const fs = require('fs');
const express = require('express');

const app = express();

app.get('/', (req, res) => {
  fs.createReadStream('really-large-file').pipe(res);
});

app.listen(4000);

私が試したPPS

app.use(async (ctx) => {
  fs.createReadStream('really-large-file').pipe(ctx.res);
  ctx.respond = false;
});

しかし、それは効果がありませんでした。

ホルガーウィル

gloabelエラーハンドラーを使用します。https://github.com/koajs/koa/wiki/Error-Handlingを参照してください

const fs = require('fs');
const Koa = require('koa');

const app = new Koa();


app.use(async (ctx, next) => {
  try {
    await next();
  } catch (err) {
    ctx.status = err.status || 500;
    ctx.body = err.message;
    ctx.app.emit('error', err, ctx);
  }
});

app.use(async (ctx) => {
  ctx.body = await openFile();
});

function openFile(){
  return new Promise((resolve,reject)=>{
    var stream = fs.createReadStream("really-large-file")
    var data
    stream.on("error",err=>reject(err))
    stream.on("data",chunk=>data+=chunk)
    stream.on("end",()=>resolve(data))
  })
}

app.listen(4000);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Koa @ 2エラー処理

分類Dev

リモートURLからのkoa.jsストリーミング応答

分類Dev

Koaエラー処理: `return`は必要ですか?

分類Dev

Koa2とkoa-routerを使用してRESTAPIのGET応答をReactクライアントに送信するにはどうすればよいですか?

分類Dev

koaサーバーへの同じリクエストですぐにCookieを設定して使用するにはどうすればよいですか?

分類Dev

koaでGETデータを処理するにはどうすればよいですか

分類Dev

Add SSL to Node.js Koa Server?

分類Dev

koa-bodyとkoa-bodyparserの違いは何ですか?

分類Dev

koa-bodyとkoa-routerを使用してノードのPOSTデータにアクセスします

分類Dev

ローカルホスト上のKoaでkoa-pgミドルウェアを使用してPGデータベースをクエリできません

分類Dev

koa-routerとkoa-handlebarの組み合わせ

分類Dev

簡単なGETでkoa-bodyparserを使用するkoa2

分類Dev

フロントエンドapollo-clientでNode / Koaからのバックエンドエラーを処理する方法

分類Dev

マングースとKoa.jsの使い方

分類Dev

koaプラグインをeggjsフレームワークに追加します

分類Dev

Koaサーバーを自動的にリロードします

分類Dev

TypeScriptでKoaデバッグモードのときにカスタムミドルウェア関数をコンソールに記録するにはどうすればよいですか?

分類Dev

nodejs: Koa 、パグのフォームは undefined を返します

分類Dev

koaルートを別々のファイルに分割するにはどうすればよいですか?

分類Dev

Koa は POST リクエストの取得から 'body' を解析しません

分類Dev

Koaリクエストハンドラーでダウンロードをトリガーする

分類Dev

KoaプロジェクトでPugのカスタムテンプレート関数を追加するにはどうすればよいですか?

分類Dev

NodeとKoaを備えたAJAX404

分類Dev

Express Hapi.js Restfy Koa app.listen()およびapp.get()はどのように機能しますか?

分類Dev

Is there a Express-style nested router for Koa.js?

分類Dev

TypeScriptでのkoa-viewsの使用

分類Dev

リダイレクト中のEPIPEエラー、Koa js、ReactのSSR

分類Dev

koaでフォームデータリクエストを行う方法は?

分類Dev

Koa.jsアプリの受け入れテストでES2016(ES7)async / awaitを使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    Koa @ 2エラー処理

  2. 2

    リモートURLからのkoa.jsストリーミング応答

  3. 3

    Koaエラー処理: `return`は必要ですか?

  4. 4

    Koa2とkoa-routerを使用してRESTAPIのGET応答をReactクライアントに送信するにはどうすればよいですか?

  5. 5

    koaサーバーへの同じリクエストですぐにCookieを設定して使用するにはどうすればよいですか?

  6. 6

    koaでGETデータを処理するにはどうすればよいですか

  7. 7

    Add SSL to Node.js Koa Server?

  8. 8

    koa-bodyとkoa-bodyparserの違いは何ですか?

  9. 9

    koa-bodyとkoa-routerを使用してノードのPOSTデータにアクセスします

  10. 10

    ローカルホスト上のKoaでkoa-pgミドルウェアを使用してPGデータベースをクエリできません

  11. 11

    koa-routerとkoa-handlebarの組み合わせ

  12. 12

    簡単なGETでkoa-bodyparserを使用するkoa2

  13. 13

    フロントエンドapollo-clientでNode / Koaからのバックエンドエラーを処理する方法

  14. 14

    マングースとKoa.jsの使い方

  15. 15

    koaプラグインをeggjsフレームワークに追加します

  16. 16

    Koaサーバーを自動的にリロードします

  17. 17

    TypeScriptでKoaデバッグモードのときにカスタムミドルウェア関数をコンソールに記録するにはどうすればよいですか?

  18. 18

    nodejs: Koa 、パグのフォームは undefined を返します

  19. 19

    koaルートを別々のファイルに分割するにはどうすればよいですか?

  20. 20

    Koa は POST リクエストの取得から 'body' を解析しません

  21. 21

    Koaリクエストハンドラーでダウンロードをトリガーする

  22. 22

    KoaプロジェクトでPugのカスタムテンプレート関数を追加するにはどうすればよいですか?

  23. 23

    NodeとKoaを備えたAJAX404

  24. 24

    Express Hapi.js Restfy Koa app.listen()およびapp.get()はどのように機能しますか?

  25. 25

    Is there a Express-style nested router for Koa.js?

  26. 26

    TypeScriptでのkoa-viewsの使用

  27. 27

    リダイレクト中のEPIPEエラー、Koa js、ReactのSSR

  28. 28

    koaでフォームデータリクエストを行う方法は?

  29. 29

    Koa.jsアプリの受け入れテストでES2016(ES7)async / awaitを使用するにはどうすればよいですか?

ホットタグ

アーカイブ