Giter Club home page Giter Club logo

Comments (8)

blakeembrey avatar blakeembrey commented on May 19, 2024 1

@frogcjn As mentioned, it's not really possible. You can use the output of path-to-regexp, of course, but you have to remember that it only outputs a RegExp and any matches will be all numeric when used with the existing router (no params population based on the name).

from path-to-regexp.

blakeembrey avatar blakeembrey commented on May 19, 2024

I don't think so, but cc @dougwilson

There's some things in router that will help eventually with this, such as the 2.0 router using the new path-to-regexp and having a plugable path engine, but for now I don't think there's a way.

from path-to-regexp.

dougwilson avatar dougwilson commented on May 19, 2024

Yes, in the current router, there is not a simple way to use an updated version of path-to-regexp except wait for router@2 or express@5 to come out with the updated module.

from path-to-regexp.

frogcjn avatar frogcjn commented on May 19, 2024

How can I use the latest version path-to-regexp with express 4?

from path-to-regexp.

frogcjn avatar frogcjn commented on May 19, 2024

Is this the right way?
npm install path-to-regexp --save (v1.5.3)

import * as pathRegexp from "path-to-regexp" // v1.5.3

// for path "/signup:phone"
router.post(pathRegexp("/signup\\:phone"), wrap(async (req, res) => {
    return res.json({ success: true, message: "Success!"})
}))

from path-to-regexp.

georgir avatar georgir commented on May 19, 2024

Ultimately, it seems that the keys need to go into the regexp's "keys" property, but that is being overwritten with numeric keys. So you could use defineProperty to make it have the correct value and be readonly (with setter to silently ignore updates, not throw an exception) before you pass it to express's .use .post .get etc.
It's a bit of a weird workaround tho.
EDIT: Here's a fiddle illustrating the hack:
https://jsfiddle.net/3e9crswm/
EDIT 2: Well, cancel this. It seems express does not use the regexp's keys property after all, but uses the original keys array that it passed to pathToRegexp. So this whole stunt is in vain.

from path-to-regexp.

georgir avatar georgir commented on May 19, 2024

I think it might be a good idea to change regexpToRegexp to respect any existing keys property instead of overwriting it. It could even be backported to an old path-to-regexp version that express can use, but will be a good feature without that too.

from path-to-regexp.

jonchurch avatar jonchurch commented on May 19, 2024

Closing as resolved

from path-to-regexp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.