Skip to content

Commit

Permalink
feat: warn about root paths without a leading slash (#2591)
Browse files Browse the repository at this point in the history
* fix(create-matcher): warn about root paths without a leading slash

close #2550

* fix(create-route-map): warn about root paths without a leading slash

close #2550

* fix(create-route-map): only warn about first route without slash

* fix(create-route-map): handle case of '' route

* fix(create-route-map): remove leftover console.log

* fix(create-route-map): warn about root paths only

* fix(create-route-map): show prettier warning message
  • Loading branch information
Sayegh7 authored and posva committed Aug 30, 2019
1 parent 638278b commit 7d7e048
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/create-route-map.js
Expand Up @@ -34,6 +34,18 @@ export function createRouteMap (
}
}

if (process.env.NODE_ENV === 'development') {
// warn if routes do not include leading slashes
const found = pathList
// check for missing leading slash
.filter(path => path && path.charAt(0) !== '*' && path.charAt(0) !== '/')

if (found.length > 0) {
const pathNames = found.map(path => `- ${path}`).join('\n')
warn(false, `Non-nested routes must include a leading slash character. Fix the following routes: \n${pathNames}`)
}
}

return {
pathList,
pathMap,
Expand Down
25 changes: 25 additions & 0 deletions test/unit/specs/create-map.spec.js
Expand Up @@ -138,6 +138,31 @@ describe('Creating Route Map', function () {
)
})

it('in development, warn if a path is missing a leading slash', function () {
process.env.NODE_ENV = 'development'
maps = createRouteMap([
{ path: 'bar', name: 'bar', component: Bar }
])
expect(console.warn).toHaveBeenCalledTimes(1)
expect(console.warn.calls.argsFor(0)[0]).toEqual('[vue-router] Non-nested routes must include a leading slash character. Fix the following routes: \n- bar')
})

it('in development, it does not log the missing leading slash when routes are valid', function () {
process.env.NODE_ENV = 'development'
maps = createRouteMap([
{ path: '/bar', name: 'bar', component: Bar }
])
expect(console.warn).not.toHaveBeenCalled()
})

it('in production, it does not log the missing leading slash warning', function () {
process.env.NODE_ENV = 'production'
maps = createRouteMap([
{ path: 'bar', name: 'bar', component: Bar }
])
expect(console.warn).not.toHaveBeenCalled()
})

describe('path-to-regexp options', function () {
const routes = [
{ path: '/foo', name: 'foo', component: Foo },
Expand Down

0 comments on commit 7d7e048

Please sign in to comment.