farce icon indicating copy to clipboard operation
farce copied to clipboard

Removing `basename` results in empty `location.pathname`

Open catamphetamine opened this issue 2 years ago • 0 comments

location.pathname is supposed to always be non-empty.

If basename is set to /basename and the user navigates to /basename URL, createBasenameMiddleware() simply strips the whole string from the URL and the result is incorrect: pathname: "".

The fix would be adding || '/' after location.pathname.slice(pathnamePrefix.length):

    makeLocation: (location) => ({
      ...location,
      pathname:
        location.pathname.indexOf(pathnamePrefix) === 0
          ? location.pathname.slice(pathnamePrefix.length)
          : null,
    }),

If anyone's interested, I published this workaround as part of navigation-stack package: https://www.npmjs.com/package/navigation-stack

catamphetamine avatar Nov 19 '23 16:11 catamphetamine