admin管理员组

文章数量:1414865

I am trying to use an inline regular expression in a koa-router route parameter, but I am getting an error. Here’s my code:

import Koa from 'koa';
import Router from 'koa-router';

const app = new Koa();
const router = new Router();

router.get('/hello/:id([0-9]{5})', (ctx) => {
  const id = ctx.params.id;
  console.log(id);
  ctx.body = `Hello ${id}`;
});

app.use(router.routes());
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

Error:
      throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}: ${DEBUG_URL}`);
              ^
TypeError: Unexpected [ at 11, expected END: /pathToRegexpError
    at Iter.consume (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:123:15)
    at consume (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:179:16)
    at parse (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:183:20)
    at C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:294:74
    at Array.map (<anonymous>)
    at pathToRegexp (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:294:25)
    at new Layer (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\koa-router\lib\layer.js:54:39)
    at Router.register (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\koa-router\lib\router.js:477:19)
    at Router.<computed> [as get] (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\koa-router\lib\router.js:828:10)
    at file:///C:/Users/User/Desktop/amagi-training/koa-router-new/index.js:7:8

Older versions of koa-router works with this. I tried reinstalling everything. Tried installing the latest for everything.

I am trying to use an inline regular expression in a koa-router route parameter, but I am getting an error. Here’s my code:

import Koa from 'koa';
import Router from 'koa-router';

const app = new Koa();
const router = new Router();

router.get('/hello/:id([0-9]{5})', (ctx) => {
  const id = ctx.params.id;
  console.log(id);
  ctx.body = `Hello ${id}`;
});

app.use(router.routes());
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

Error:
      throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}: ${DEBUG_URL}`);
              ^
TypeError: Unexpected [ at 11, expected END: https://git.new/pathToRegexpError
    at Iter.consume (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:123:15)
    at consume (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:179:16)
    at parse (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:183:20)
    at C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:294:74
    at Array.map (<anonymous>)
    at pathToRegexp (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\path-to-regexp\dist\index.js:294:25)
    at new Layer (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\koa-router\lib\layer.js:54:39)
    at Router.register (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\koa-router\lib\router.js:477:19)
    at Router.<computed> [as get] (C:\Users\User\Desktop\amagi-training\koa-router-new\node_modules\koa-router\lib\router.js:828:10)
    at file:///C:/Users/User/Desktop/amagi-training/koa-router-new/index.js:7:8

Older versions of koa-router works with this. I tried reinstalling everything. Tried installing the latest for everything.

Share Improve this question asked Feb 11 at 11:27 ButteryAvocadoButteryAvocado 1 3
  • Maybe inline regular expressions directly within route definitions are no longer supported? Try replacing '/hello/:id([0-9]{5})' with '/hello/:id' and then replacing console.log(id); with if (!/^\d{5}$/.test(id)) { ctx.status = 400; ctx.body = "Invalid ID format. It must be a 5-digit number."; return;} – Wiktor Stribiżew Commented Feb 11 at 11:30
  • @WiktorStribiżew thank you that works. I am trying to find an example in the koa-router documentation. Were you able to find it? – ButteryAvocado Commented Feb 13 at 9:03
  • I have no idea, I cannot find any information about that either. – Wiktor Stribiżew Commented Feb 13 at 9:31
Add a comment  | 

1 Answer 1

Reset to default 0

This error occurs in the latest version 13.0.1. Tried to downgrade to 11.0.2 or 12.0.1 and solved the issue.

In package.json change: "koa-router": "11.0.2" and remember to remove the "^"

I have not check detailed on the document, maybe this changed to other syntax?

本文标签: Error Inline regex not working in koarouter (Unexpected quot(quot at 10)Stack Overflow