Skip to content

Commit e8aa688

Browse files
wadetandyyyx990803
authored andcommitted
fix: fix usage with https proxy by switching from axios to request (#829)
Closes #785 Axios has a [known issue](axios/axios#658) that causes requests to hang when accessing an HTTPS resource via a proxy served over HTTP. This changes out the axios dependency for the [request](https://github.com/request/request) library. In order to keep `async/await` conventions easy, I also dropped in the [request-promise-native](https://github.com/request/request-promise-native) dependency.
1 parent 9040df8 commit e8aa688

File tree

6 files changed

+28
-13
lines changed

6 files changed

+28
-13
lines changed

Diff for: package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
]
4343
},
4444
"devDependencies": {
45-
"axios": "^0.17.1",
4645
"babel-core": "^7.0.0-0",
4746
"debug": "^3.1.0",
4847
"eslint": "^4.16.0",
@@ -54,6 +53,8 @@
5453
"lint-staged": "^6.0.1",
5554
"memfs": "^2.6.0",
5655
"puppeteer": "^1.0.0",
56+
"request": "^2.83.0",
57+
"request-promise-native": "^1.0.5",
5758
"yorkie": "^1.0.2"
5859
}
5960
}

Diff for: packages/@vue/cli/lib/util/getVersions.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ module.exports = async function getVersions () {
88
// test/debug, use local version
99
latest = process.env.VUE_CLI_LATEST_VERSION = current
1010
} else {
11-
const axios = require('axios')
11+
const request = require('./request')
1212
const options = require('../options').loadOptions()
1313
const registry = options.useTaobaoRegistry
1414
? `https://registry.npm.taobao.org`
1515
: `https://registry.npmjs.org`
1616

17-
const res = await axios.get(`${registry}/vue-cli-version-marker/latest`)
18-
if (res.status === 200) {
19-
latest = process.env.VUE_CLI_LATEST_VERSION = res.data.version
17+
const res = await request.get(`${registry}/vue-cli-version-marker/latest`)
18+
if (res.statusCode === 200) {
19+
latest = process.env.VUE_CLI_LATEST_VERSION = res.body.version
2020
} else {
2121
// fallback to local version
2222
latest = process.env.VUE_CLI_LATEST_VERSION = current

Diff for: packages/@vue/cli/lib/util/installDeps.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const axios = require('axios')
1+
const request = require('./request')
22
const chalk = require('chalk')
33
const execa = require('execa')
44
const readline = require('readline')
@@ -16,7 +16,7 @@ const registries = {
1616
const taobaoDistURL = 'https://npm.taobao.org/dist'
1717

1818
async function ping (registry) {
19-
await axios.get(`${registry}/vue-cli-version-marker/latest`)
19+
await request.get(`${registry}/vue-cli-version-marker/latest`)
2020
return registry
2121
}
2222

Diff for: packages/@vue/cli/lib/util/request.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const request = require('request-promise-native')
2+
3+
module.exports = {
4+
async get (uri) {
5+
const reqOpts = {
6+
method: 'GET',
7+
resolveWithFullResponse: true,
8+
json: true,
9+
uri
10+
}
11+
12+
return request(reqOpts)
13+
}
14+
}

Diff for: packages/@vue/cli/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
},
2929
"dependencies": {
3030
"@vue/cli-shared-utils": "^3.0.0-alpha.11",
31-
"axios": "^0.17.1",
3231
"chalk": "^2.3.0",
3332
"commander": "^2.12.2",
3433
"ejs": "^2.5.7",
@@ -44,6 +43,8 @@
4443
"minimist": "^1.2.0",
4544
"mkdirp": "^0.5.1",
4645
"recast": "^0.13.0",
46+
"request": "^2.83.0",
47+
"request-promise-native": "^1.0.5",
4748
"resolve": "^1.5.0",
4849
"rimraf": "^2.6.2",
4950
"semver": "^5.4.1",

Diff for: scripts/syncDeps.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
const fs = require('fs')
55
const path = require('path')
66
const chalk = require('chalk')
7-
const axios = require('axios')
7+
const request = require('request-promise-native')
88
const semver = require('semver')
99
const globby = require('globby')
1010
const { execSync } = require('child_process')
@@ -24,13 +24,12 @@ const getRemoteVersion = async (pkg) => {
2424
}
2525
let res
2626
try {
27-
res = await axios.get(`http://registry.npmjs.org/${pkg}/latest`)
27+
res = await request(`http://registry.npmjs.org/${pkg}/latest`)
2828
} catch (e) {
2929
return
3030
}
31-
const version = res.data.version
32-
versionCache[pkg] = version
33-
return version
31+
versionCache[pkg] = res.version
32+
return res.version
3433
}
3534

3635
const getRemoteVersionSync = pkg => {

0 commit comments

Comments
 (0)