Improve the Node version warning because why not

This makes the warning look nice and consistent with the other logs we display, while being safe to never break if a dependency/loaded file is not compatible with this version of Node.
Note that there is some ES6 syntax (`let`, arrow functions, template literals), but The Lounge has not been compatible with Node v0.10 for a very long time now.
This commit is contained in:
Jérémie Astori 2017-11-22 00:54:24 -05:00 committed by Pavel Djundik
parent 13a53706f0
commit 421d2b7b70
1 changed files with 23 additions and 6 deletions

View File

@ -5,14 +5,31 @@
process.chdir(__dirname);
// Perform node version check before loading any other files or modules
// Doing this check as soon as possible allows us to avoid ES6 parser errors or other issues
// Doing this check as soon as possible allows us to avoid ES6 parser errors or
// other issues
// Try to display warnings nicely, but gracefully degrade if anything goes wrong
var pkg = require("./package.json");
if (!require("semver").satisfies(process.version, pkg.engines.node)) {
/* eslint-disable no-console */
console.error("=== WARNING!");
console.error("=== The oldest supported Node.js version is", pkg.engines.node);
console.error("=== We strongly encourage you to upgrade, see https://nodejs.org/en/download/package-manager/ for more details\n");
/* eslint-enable no-console */
let colors;
let log;
try {
colors = require("colors/safe");
} catch (e) {
colors = {};
colors.green = colors.red = colors.bold = (x) => x;
}
try {
log = require("./src/log");
} catch (e) {
log = {};
log.warn = (msg) => console.error(`[WARN] ${msg}`); // eslint-disable-line no-console
}
log.warn(`The Lounge requires Node.js ${colors.green(pkg.engines.node)} (current version: ${colors.red(process.version)})`);
log.warn(colors.bold("We strongly encourage you to upgrade Node.js"));
log.warn("See https://nodejs.org/en/download/package-manager/ for more details");
}
require("./src/command-line");