diff --git a/src/node/server.js b/src/node/server.js index 8972f252..9ccedfa6 100755 --- a/src/node/server.js +++ b/src/node/server.js @@ -45,6 +45,11 @@ async.waterfall([ NodeVersion.enforceMinNodeVersion('6.9.0', callback); }, + function(callback) + { + NodeVersion.checkDeprecationStatus('8.9.0', '1.8.0', callback); + }, + // load npm function(callback) { npm.load({}, function(er) { diff --git a/src/node/utils/NodeVersion.js b/src/node/utils/NodeVersion.js index bee58f02..49c1efe8 100644 --- a/src/node/utils/NodeVersion.js +++ b/src/node/utils/NodeVersion.js @@ -35,3 +35,20 @@ exports.enforceMinNodeVersion = function(minNodeVersion, callback) { callback(); } }; + +/** + * Prints a warning if running on a supported but deprecated Node version + * + * @param {String} lowestNonDeprecatedNodeVersion all Node version less than this one are deprecated + * @param {Function} epRemovalVersion Etherpad version that will remove support for deprecated Node releases + */ +exports.checkDeprecationStatus = function(lowestNonDeprecatedNodeVersion, epRemovalVersion, callback) { + const semver = require('semver'); + const currentNodeVersion = process.version; + + if (semver.lt(currentNodeVersion, lowestNonDeprecatedNodeVersion)) { + console.warn(`Support for Node ${currentNodeVersion} will be removed in Etherpad ${epRemovalVersion}. Please consider updating at least to Node ${lowestNonDeprecatedNodeVersion}`); + } + + callback(); +};