diff --git a/lib/core/middleware/nuxt.js b/lib/core/middleware/nuxt.js
index 8c1a14c59152..a1ffee0abc1b 100644
--- a/lib/core/middleware/nuxt.js
+++ b/lib/core/middleware/nuxt.js
@@ -7,11 +7,12 @@ import { getContext } from '../../common/utils'
export default async function nuxtMiddleware(req, res, next) {
// Get context
const context = getContext(req, res)
+ const url = decodeURIComponent(req.url)
res.statusCode = 200
try {
- const result = await this.renderRoute(req.url, context)
- await this.nuxt.callHook('render:route', req.url, result, context)
+ const result = await this.renderRoute(url, context)
+ await this.nuxt.callHook('render:route', url, result, context)
const {
html,
cspScriptSrcHashSet,
@@ -21,7 +22,7 @@ export default async function nuxtMiddleware(req, res, next) {
} = result
if (redirected) {
- this.nuxt.callHook('render:routeDone', req.url, result, context)
+ this.nuxt.callHook('render:routeDone', url, result, context)
return html
}
if (error) {
@@ -34,7 +35,7 @@ export default async function nuxtMiddleware(req, res, next) {
if (fresh(req.headers, { etag })) {
res.statusCode = 304
res.end()
- this.nuxt.callHook('render:routeDone', req.url, result, context)
+ this.nuxt.callHook('render:routeDone', url, result, context)
return
}
res.setHeader('ETag', etag)
@@ -81,7 +82,7 @@ export default async function nuxtMiddleware(req, res, next) {
res.setHeader('Content-Type', 'text/html; charset=utf-8')
res.setHeader('Content-Length', Buffer.byteLength(html))
res.end(html, 'utf8')
- this.nuxt.callHook('render:routeDone', req.url, result, context)
+ this.nuxt.callHook('render:routeDone', url, result, context)
return html
} catch (err) {
/* istanbul ignore if */
diff --git "a/test/fixtures/spa/pages/\321\202\320\265\321\201\321\202\351\233\250.vue" "b/test/fixtures/spa/pages/\321\202\320\265\321\201\321\202\351\233\250.vue"
new file mode 100644
index 000000000000..c60926b6ac5e
--- /dev/null
+++ "b/test/fixtures/spa/pages/\321\202\320\265\321\201\321\202\351\233\250.vue"
@@ -0,0 +1,12 @@
+
+ Hello SPA!
+
+
+
diff --git a/test/unit/spa.test.js b/test/unit/spa.test.js
index f63153565746..0d866a6b4f45 100644
--- a/test/unit/spa.test.js
+++ b/test/unit/spa.test.js
@@ -27,6 +27,14 @@ describe('spa', () => {
consola.log.mockClear()
})
+ test('/тест雨 (test non ascii route)', async () => {
+ const { html } = await renderRoute('/тест雨')
+ expect(html).toMatch('Hello SPA!')
+ expect(consola.log).not.toHaveBeenCalledWith('created')
+ expect(consola.log).toHaveBeenCalledWith('mounted')
+ consola.log.mockClear()
+ })
+
test('/custom (custom layout)', async () => {
const { html } = await renderRoute('/custom')
expect(html).toMatch('Custom layout')