Skip to content

Commit 7dd51be

Browse files
committed
fix(request): Change axios lib for request
Closes vuejs#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 46182d0 commit 7dd51be

File tree

6 files changed

+34
-10
lines changed

6 files changed

+34
-10
lines changed

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
}

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

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

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+
}

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",

scripts/syncDeps.js

+10-2
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')
@@ -18,13 +18,21 @@ const localPackageRE = /'(@vue\/(?:cli|eslint|babel)[\w-]+)': '\^([\w-.]+)'/g
1818

1919
const versionCache = {}
2020

21+
const getRequest = uri => {
22+
request({
23+
method: 'GET',
24+
resolveWithFullResponse: true,
25+
uri
26+
})
27+
}
28+
2129
const getRemoteVersion = async (pkg) => {
2230
if (versionCache[pkg]) {
2331
return versionCache[pkg]
2432
}
2533
let res
2634
try {
27-
res = await axios.get(`http://registry.npmjs.org/${pkg}/latest`)
35+
res = await getRequest(`http://registry.npmjs.org/${pkg}/latest`)
2836
} catch (e) {
2937
return
3038
}

0 commit comments

Comments
 (0)