mirror of
https://github.com/verdaccio/verdaccio.git
synced 2024-11-17 07:45:52 +01:00
eb7a8e3528
fix #1328 and #720 Type: bug The following has been addressed in the PR: Instead of returning a 404 (Not Found) when npm, yarn, etc requests a package and the package cannot be acquired from an uplink due to a connection timeout, socket timeout, or connection reset problem, a 503 (service unavailable) is returned by Verdaccio instead. In limited testing of a few versions of npm and yarn, both of these clients correctly attempt to retry the request when a 503 is returned. Added functional tests to verify the behavior (this adds a dev dependency on nock, which provides HTTP request mocking Description: This resolves issue #1328 and #720, and ensures npm/yarn install commands don't fail immediately when there is an intermittent network timeout problem with an uplink. Instead Verdaccio will appropriately respond to the client with a 503. A 404 response (current behavior) incorrectly tells the client that the package does not exist (which may or may not be true) and to not try again.
22 lines
485 B
JavaScript
22 lines
485 B
JavaScript
const nock = require('nock');
|
|
|
|
function Plugin(config) {
|
|
const self = Object.create(Plugin.prototype);
|
|
self._config = config;
|
|
return self;
|
|
}
|
|
|
|
Plugin.prototype.register_middlewares = function (app, auth, storage) {
|
|
|
|
app.get('/test-uplink-timeout-*', function (req, res, next) {
|
|
nock('http://localhost:55552')
|
|
.get(req.path)
|
|
.socketDelay(31000).reply(200); // 31s is greater than the default 30s connection timeout
|
|
|
|
next();
|
|
});
|
|
|
|
}
|
|
|
|
module.exports = Plugin;
|