Ensure installed correct version of modules on startup, bump dependencies (#6207)

* Ensure installed correct version of modules

* Bump dependencies

* Bump promise-polyfill

* Fix emailer test

* Fix auto-install regression

introduced in 9b5e0f9e95
v1.18.x
Peter Jaszkowiak 7 years ago committed by Julian Lam
parent 9922720dd3
commit 4387d5d466

@ -19,23 +19,23 @@
"dependencies": { "dependencies": {
"ace-builds": "^1.2.9", "ace-builds": "^1.2.9",
"async": "2.6.0", "async": "2.6.0",
"autoprefixer": "7.1.6", "autoprefixer": "7.2.4",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"benchpressjs": "^1.2.0", "benchpressjs": "^1.2.0",
"body-parser": "^1.18.2", "body-parser": "^1.18.2",
"bootstrap": "^3.3.7", "bootstrap": "^3.3.7",
"chart.js": "^2.7.0", "chart.js": "^2.7.1",
"colors": "^1.1.2", "colors": "^1.1.2",
"compression": "^1.7.1", "compression": "^1.7.1",
"commander": "^2.11.0", "commander": "^2.12.2",
"connect-ensure-login": "^0.1.1", "connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1", "connect-flash": "^0.1.1",
"connect-mongo": "2.0.0", "connect-mongo": "2.0.1",
"connect-multiparty": "^2.1.0", "connect-multiparty": "^2.1.0",
"connect-redis": "3.3.2", "connect-redis": "3.3.3",
"cookie-parser": "^1.4.3", "cookie-parser": "^1.4.3",
"cron": "^1.3.0", "cron": "^1.3.0",
"cropperjs": "^1.1.3", "cropperjs": "^1.2.2",
"csurf": "^1.9.0", "csurf": "^1.9.0",
"daemon": "^1.1.0", "daemon": "^1.1.0",
"express": "^4.16.2", "express": "^4.16.2",
@ -48,12 +48,12 @@
"jquery": "^3.2.1", "jquery": "^3.2.1",
"jsesc": "2.5.1", "jsesc": "2.5.1",
"json-2-csv": "^2.1.2", "json-2-csv": "^2.1.2",
"less": "^2.7.2", "less": "^2.7.3",
"lodash": "^4.17.4", "lodash": "^4.17.4",
"logrotate-stream": "^0.2.5", "logrotate-stream": "^0.2.5",
"lru-cache": "4.1.1", "lru-cache": "4.1.1",
"material-design-lite": "^1.3.0", "material-design-lite": "^1.3.0",
"mime": "^2.0.3", "mime": "^2.2.0",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
"mongodb": "2.2.33", "mongodb": "2.2.33",
"morgan": "^1.9.0", "morgan": "^1.9.0",
@ -73,18 +73,18 @@
"nodebb-theme-slick": "1.1.2", "nodebb-theme-slick": "1.1.2",
"nodebb-theme-vanilla": "8.1.4", "nodebb-theme-vanilla": "8.1.4",
"nodebb-widget-essentials": "4.0.1", "nodebb-widget-essentials": "4.0.1",
"nodemailer": "4.4.0", "nodemailer": "4.4.1",
"passport": "^0.4.0", "passport": "^0.4.0",
"passport-local": "1.0.0", "passport-local": "1.0.0",
"postcss": "6.0.14", "postcss": "6.0.15",
"postcss-clean": "1.1.0", "postcss-clean": "1.1.0",
"promise-polyfill": "^6.0.2", "promise-polyfill": "^7.0.0",
"prompt": "^1.0.0", "prompt": "^1.0.0",
"redis": "2.8.0", "redis": "2.8.0",
"request": "2.83.0", "request": "2.83.0",
"rimraf": "2.6.2", "rimraf": "2.6.2",
"rss": "^1.2.2", "rss": "^1.2.2",
"sanitize-html": "^1.14.1", "sanitize-html": "^1.16.3",
"semver": "^5.4.1", "semver": "^5.4.1",
"serve-favicon": "^2.4.5", "serve-favicon": "^2.4.5",
"sitemap": "^1.13.0", "sitemap": "^1.13.0",
@ -94,8 +94,8 @@
"socketio-wildcard": "2.0.0", "socketio-wildcard": "2.0.0",
"spdx-license-list": "^3.0.1", "spdx-license-list": "^3.0.1",
"toobusy-js": "^0.5.1", "toobusy-js": "^0.5.1",
"uglify-js": "^3.1.5", "uglify-js": "^3.3.4",
"validator": "9.1.2", "validator": "9.2.0",
"winston": "^2.4.0", "winston": "^2.4.0",
"xml": "^1.0.1", "xml": "^1.0.1",
"xregexp": "3.2.0", "xregexp": "3.2.0",
@ -103,16 +103,16 @@
}, },
"devDependencies": { "devDependencies": {
"coveralls": "^3.0.0", "coveralls": "^3.0.0",
"eslint": "^4.9.0", "eslint": "^4.14.0",
"eslint-config-airbnb-base": "^12.1.0", "eslint-config-airbnb-base": "^12.1.0",
"eslint-plugin-import": "^2.8.0", "eslint-plugin-import": "^2.8.0",
"grunt": "^1.0.1", "grunt": "^1.0.1",
"grunt-contrib-watch": "^1.0.0", "grunt-contrib-watch": "^1.0.0",
"jsdom": "^11.3.0", "jsdom": "^11.5.1",
"mocha": "^4.0.1", "mocha": "^4.1.0",
"mocha-lcov-reporter": "^1.3.0", "mocha-lcov-reporter": "^1.3.0",
"nyc": "^11.2.1", "nyc": "^11.4.1",
"smtp-server": "^3.3.0" "smtp-server": "^3.4.1"
}, },
"bugs": { "bugs": {
"url": "https://github.com/NodeBB/NodeBB/issues" "url": "https://github.com/NodeBB/NodeBB/issues"

@ -6,9 +6,11 @@ var path = require('path');
var packageInstall = require('./package-install'); var packageInstall = require('./package-install');
var dirname = require('./paths').baseDir; var dirname = require('./paths').baseDir;
var defaultPackage;
// check to make sure dependencies are installed // check to make sure dependencies are installed
try { try {
fs.readFileSync(path.join(dirname, 'package.json')); defaultPackage = JSON.parse(fs.readFileSync(path.join(dirname, 'install/package.json'), 'utf8'));
} catch (e) { } catch (e) {
if (e.code === 'ENOENT') { if (e.code === 'ENOENT') {
console.warn('package.json not found.'); console.warn('package.json not found.');
@ -29,13 +31,24 @@ try {
} }
try { try {
fs.readFileSync(path.join(dirname, 'node_modules/async/package.json'), 'utf8'); var semver = require('semver');
fs.readFileSync(path.join(dirname, 'node_modules/commander/package.json'), 'utf8');
fs.readFileSync(path.join(dirname, 'node_modules/colors/package.json'), 'utf8'); var checkVersion = function (packageName) {
fs.readFileSync(path.join(dirname, 'node_modules/nconf/package.json'), 'utf8'); var version = JSON.parse(fs.readFileSync(path.join(dirname, 'node_modules', packageName, 'package.json'), 'utf8')).version;
if (!semver.satisfies(version, defaultPackage.dependencies[packageName])) {
var e = new TypeError('Incorrect dependency version: ' + packageName);
e.code = 'DEP_WRONG_VERSION';
throw e;
}
};
checkVersion('nconf');
checkVersion('async');
checkVersion('commander');
checkVersion('colors');
} catch (e) { } catch (e) {
if (e.code === 'ENOENT') { if (['ENOENT', 'DEP_WRONG_VERSION', 'MODULE_NOT_FOUND'].indexOf(e.code) !== -1) {
console.warn('Dependencies not yet installed.'); console.warn('Dependencies outdated or not yet installed.');
console.log('Installing them now...\n'); console.log('Installing them now...\n');
packageInstall.installAll(); packageInstall.installAll();

@ -30,8 +30,6 @@ function updatePackageFile() {
exports.updatePackageFile = updatePackageFile; exports.updatePackageFile = updatePackageFile;
function installAll() { function installAll() {
process.stdout.write(' started\n'.green);
var prod = global.env !== 'development'; var prod = global.env !== 'development';
var command = 'npm install'; var command = 'npm install';
try { try {

@ -23,6 +23,7 @@ var steps = {
install: { install: {
message: 'Bringing base dependencies up to date...', message: 'Bringing base dependencies up to date...',
handler: function (next) { handler: function (next) {
process.stdout.write(' started\n'.green);
packageInstall.installAll(); packageInstall.installAll();
next(); next();
}, },

@ -14,6 +14,7 @@ var JS = module.exports;
JS.scripts = { JS.scripts = {
base: [ base: [
'node_modules/promise-polyfill/dist/polyfill.js',
'node_modules/jquery/dist/jquery.js', 'node_modules/jquery/dist/jquery.js',
'node_modules/socket.io-client/dist/socket.io.js', 'node_modules/socket.io-client/dist/socket.io.js',
'public/vendor/jquery/timeago/jquery.timeago.js', 'public/vendor/jquery/timeago/jquery.timeago.js',
@ -36,7 +37,6 @@ JS.scripts = {
'public/src/ajaxify.js', 'public/src/ajaxify.js',
'public/src/overrides.js', 'public/src/overrides.js',
'public/src/widgets.js', 'public/src/widgets.js',
'node_modules/promise-polyfill/promise.js',
], ],
// files listed below are only available client-side, or are bundled in to reduce # of network requests on cold load // files listed below are only available client-side, or are bundled in to reduce # of network requests on cold load

@ -112,6 +112,7 @@ describe('emailer', function () {
Meta.configs.setMultiple({ Meta.configs.setMultiple({
'email:smtpTransport:enabled': '1', 'email:smtpTransport:enabled': '1',
'email:smtpTransport:user': username, 'email:smtpTransport:user': username,
'email:smtpTransport:pass': 'anything',
'email:smtpTransport:service': 'nodebb-custom-smtp', 'email:smtpTransport:service': 'nodebb-custom-smtp',
'email:smtpTransport:port': 4000, 'email:smtpTransport:port': 4000,
'email:smtpTransport:host': 'localhost', 'email:smtpTransport:host': 'localhost',

Loading…
Cancel
Save