1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00

Throw Error when url.parse without true is parsed (#1282)

* Throw Error when url.parse without true is parsed

This is a bit more descriptive when this mistake is made by the user.

* Parse when needed

* Parse querystring if it is not provided
This commit is contained in:
Tim Neutkens 2017-03-02 00:30:07 +01:00 committed by Guillermo Rauch
parent 7c8cd4bc69
commit 40738c6e44

View file

@ -1,5 +1,6 @@
import { resolve, join } from 'path' 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 fs from 'mz/fs'
import http, { STATUS_CODES } from 'http' import http, { STATUS_CODES } from 'http'
import { import {
@ -33,12 +34,14 @@ export default class Server {
getRequestHandler () { getRequestHandler () {
return (req, res, parsedUrl) => { return (req, res, parsedUrl) => {
// Parse url if parsedUrl not provided
if (!parsedUrl) { if (!parsedUrl) {
parsedUrl = parse(req.url, true) parsedUrl = parseUrl(req.url, true)
} }
if (!parsedUrl.query) { // Parse the querystring ourselves if the user doesn't handle querystring parsing
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.') if (typeof parsedUrl.query === 'string') {
parsedUrl.query = parseQs(parsedUrl.query)
} }
return this.run(req, res, parsedUrl) return this.run(req, res, parsedUrl)
@ -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 const { pathname, query } = parsedUrl
res.statusCode = 404 res.statusCode = 404
return this.renderError(null, req, res, pathname, query) return this.renderError(null, req, res, pathname, query)