Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions server/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { resolve, join } from 'path'
import { parse } from 'url'
import { parse as parseUrl } from 'url'
import { parse as parseQs } from 'querystring'
import fs from 'mz/fs'
import http, { STATUS_CODES } from 'http'
import {
Expand Down Expand Up @@ -33,12 +34,14 @@ export default class Server {

getRequestHandler () {
return (req, res, parsedUrl) => {
// Parse url if parsedUrl not provided
if (!parsedUrl) {
parsedUrl = parse(req.url, true)
parsedUrl = parseUrl(req.url, true)
}

if (!parsedUrl.query) {
throw new Error('Please provide a parsed url to `handle` as third parameter. See https://github.com/zeit/next.js#custom-server-and-routing for an example.')
// Parse the querystring ourselves if the user doesn't handle querystring parsing
if (typeof parsedUrl.query === 'string') {
parsedUrl.query = parseQs(parsedUrl.query)
}

return this.run(req, res, parsedUrl)
Expand Down Expand Up @@ -222,7 +225,7 @@ export default class Server {
}
}

async render404 (req, res, parsedUrl = parse(req.url, true)) {
async render404 (req, res, parsedUrl = parseUrl(req.url, true)) {
const { pathname, query } = parsedUrl
res.statusCode = 404
return this.renderError(null, req, res, pathname, query)
Expand Down