Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Middlewares not being called when using wildcard "*"

オープン
#112 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
aws, javascript, node.js
領域
api, backend

調査の方向性

api.use のミドルウェア登録とワイルドカードパスの処理から始め、再現用として記載されている /data/* の authorize ミドルウェアを使用します。この登録が存在する場合に、ミドルウェアの順序とパスのマッチングがどのように動作するかを検証します。一般的なミドルウェアが引き続き実行され、authorize が /data/* に限定されたままであれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Lambda api: 0.10.1

I have this API:

const api = require('lambda-api')({base: 'v2'})
  , middleware = require('../utils/middleware')
  , LiveblogApi = require('../apis/liveblogApi');

//apply middlewares
api.use(middleware.addCorsHeaders);
api.use(middleware.logRequest);
api.use(['/data/*'], middleware.authorize);
api.use(middleware.populateCommonHeaders);
api.use(middleware.errorHandler);

api.post('/data/pbp/:eventId', async (req, res) => {
  let response = await LiveblogApi.addPost(req.params.eventId, req.body);
  return res.json(response);
});

api.post('/data/pbp/:eventId/:key', async (req, res) => {
  let response = await LiveblogApi.setPost(req.params.eventId, req.params.key, req.body);
  return res.json(response);
});

api.delete('/data/pbp/:eventId/:key', async (req, res) => {
  let response = await LiveblogApi.deletePost(req.params.eventId, req.params.key);
  return res.json(response);
});

api.post('/data/drafts/:eventId', async (req, res) => {
  let response = await LiveblogApi.addDraft(req.params.eventId, req.body);
  return res.json(response);
});

api.post('/data/drafts/:eventId/:key', async (req, res) => {
  let response = await LiveblogApi.setDraft(req.params.eventId, req.params.key, req.body);
  return res.json(response);
});

api.delete('/data/drafts/:eventId/:key', async (req, res) => {
  let response = await LiveblogApi.deleteDraft(req.params.eventId, req.params.key);
  return res.json(response);
});

api.delete('/data/comments/:eventId/:postId/:key', async (req, res) => {
  let response = await LiveblogApi.deleteComment(req.params.eventId, req.params.postId, req.params.key);
  return res.json(response);
});

module.exports = api;

You can see that I have another JS module that holds all middlewares. When I deploy it like this, it looks like only the authorize middleware is being called.

If I remove the line:
api.use(['/data/*'], middleware.authorize);

Then the other middlewares are called normally.

In old versions of the lib this didn't happen, I just updated to the newest version and deployed again.

My workaround:
api.use(middleware.authorize); which has the same effect as before.

主要言語
JavaScript
スター
1.5k
フォーク
127
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

jeremydaly/lambda-api のほかの issue

jeremydaly/lambda-api の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。