From 63d952f1973c90136554b5176055c2d7eb495359 Mon Sep 17 00:00:00 2001 From: Gray Date: Fri, 16 Mar 2018 20:14:27 +0800 Subject: [PATCH] fix(webpack): url parse error under proxy #34 --- packages/beidou-webpack/app/middleware/webpack.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/beidou-webpack/app/middleware/webpack.js b/packages/beidou-webpack/app/middleware/webpack.js index 6d0c44c6..1c7c770a 100644 --- a/packages/beidou-webpack/app/middleware/webpack.js +++ b/packages/beidou-webpack/app/middleware/webpack.js @@ -1,19 +1,16 @@ 'use strict'; -const url = require('url'); +const URL = require('url-parse'); const request = require('request'); const debug = require('debug')('beidou-webpack'); module.exports = function (options, app) { return async function (ctx, next) { - if (!app.webpackServerPort) return next(); - let webpackUrl = ctx.request.href.replace( - url.parse(ctx.request.href).port, - app.webpackServerPort - ); + const originUrl = `http://${ctx.host}${ctx.request.url}`; + const url = new URL(originUrl); + url.set('port', app.webpackServerPort); + const webpackUrl = url.href; - // force to use `http` protocol, because webpack does not support https - webpackUrl = webpackUrl.replace(/^https/, 'http'); const webpackRequest = request(webpackUrl); const notFound = await new Promise((resolve) => { webpackRequest.on('response', function (res) {