問題タブ [koa2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2760 参照

error-handling - Koa でエラーが発生したときにカスタム ページを表示する

質問の背景は次のとおりです。私はKoa 2を使用してキックオフ コアをフォローしています。しかし、キックオフの演習は Koa 1 用に設計されています。Koa 2 のこの問題に対して問題を作成しました: Koa 2のエラー ハンドラのタスクはパスできません

要するに、私の問題は、500 エラーが発生したときにカスタム エラー ページを表示する方法です。

コードは次のとおりです。

しかし、私のエラーページは常に「内部サーバーエラー」として表示されます。これはデフォルトのメッセージです。ctx.body = 'Oops! internal server error';ページを変更できなかったようです。

助けてくれてありがとう!

0 投票する
2 に答える
1704 参照

node.js - NodeJS API のテスト時に外部サービスをモックする方法

統合テストでカバーしようとしているkoaで構築されたJSON APIがあります。

簡単なテストは次のようになります。

ここで問題が発生するのは、コントローラーの背後にあるアクション (POST /users での saveUser など) が外部リソースを使用する場合です。たとえば、ユーザーの電話番号を検証する必要があります。

私のコントローラーは次のようになります。

リクエストオブジェクトをモックできることを望んでいましctx.repoたが、テストからそれを取得できないようです。つまり、テストが実際に電話番号検証サービスにヒットしていることを意味します。

その検証サービスにアクセスする方法はありますか?

0 投票する
1 に答える
1201 参照

javascript - オブジェクトを追加した後に Koa-session がリセットされますか?

私はキャラクターを検索し、それを使って何かをするコントローラを持っています.コントローラは次のようになります:

処理ctx.session.foundChar = foundCharすると、何らかの理由でセッションがリセットされたように見え、{}代わりにセッションのログが表示されます

しかし、私が変更した場合ctx.session.foundChar = "Hello";< 正常に動作します。

セッションにデータ制限や何かがあるのか​​ 、それともこれが問題ではなかったのかはわかりませんが、express-sessionすべてをKoaに変換しようとしていますが、とにかくセッションがリセットされる理由がわかりません.

foundChar外観の例

したがって、これは適切にログに記録されますが、ページを更新した後、認証されなくなりctx.session{}

0 投票する
1 に答える
525 参照

reactjs - Koa2 に値を渡す方法

koa サーバーに値を渡したい反応アプリがあります。

以下は私のサーバーコードです

クライアントから渡される値を取得できません。何が起こっているか知っていますか?

0 投票する
1 に答える
3712 参照

koa - koa で複数の秘密鍵が必要なのはなぜですか?

申し訳ありませんが、koa で秘密鍵がどのように機能するのかよくわかりません。koa には、次のように使用されるオブジェクトのkeysフィールドがあります。app

そして、koa-csrfミドルウェアを使用する場合、デフォルトでは、ビルトインcsrf.middlewareは によって提供されるキーを使用しませんapp.keys。デフォルトのミドルウェアを使用する場合、セッションに秘密鍵を設定する別のミドルウェアを作成する必要があります。

Flask を使用するときは、. によって設定された秘密鍵を 1 つだけ指定する必要がありstringますarray。なぜ複数の秘密鍵が必要なのですか? アプリケーション全体に 1 つだけを使用するだけでは十分ではありませんか?

0 投票する
1 に答える
267 参照

mongoose - mongoose findbyId 内部エラー

Koa 2 と koa-router を使用しています。

ルーターファイル:

URL http://localhost:3000/api/users/にアクセスすると、結果を取得できます。

ただし、ブラウザーで get by id を実行してhttp://localhost:3000/api/users/56bc57c48cc9e78b4ce61206 も何も起こらず、エラーも発生しません。ブラウザは、以前に持っていた Web ページをロードするだけです。

ID を存在しない ID に変更すると、ブラウザーで内部エラーが発生しました。ターミナルに次のように表示されます。

0 投票する
1 に答える
313 参照

mongodb - mongoose findbyId 内部サーバー エラー

私はユーザーのコレクションを持っています:

私のテストのためだけに、最後のものには Object_id がないことに注意してください。私はKoa2を使用し、async /awaitを使用していますが、影響はないと思います。私のルートは/api/usersにマウントされており、次のようになっています。

http://localhost:3000/api/usersをロードすると、すべてのユーザーが表示されます。

http://localhost:3000/api/users/56d9f3435ce78127510332eaを読み込むと、そのユーザーのみが表示されます。

ただし.... http://localhost:3000/api/users/56bc57c4ea0ba50642eb0418をロードすると、内部サーバーエラーが発生しました。

http://localhost:3000/api/users/whateverを読み込むと、Internal Server Error も表示されます

だから私の質問: findById は常に Object_id を期待していますか? この Object_id がコレクションに含まれていない場合、404 を返すべきではありませんか?

自分の ID でデータをインポートするとどうなりますか? findById メソッドを使用できませんか? この行にコメントしたとしても?let id = ObjectId(ctx.params.id);

404 エラーが発生することはありませんか?

ctx.body = err の ctx.throw (500) を変更すると、常にブラウザに {} が表示されます。たぶんそれが理由です、エラーは空です。しかし、なぜ?