Skip to content

Commit 63fb77f

Browse files
committed
fix(express): import connect-mongo/es5 if node < 4
closes #1844
1 parent 754a7e0 commit 63fb77f

File tree

4 files changed

+45
-14
lines changed

4 files changed

+45
-14
lines changed

Diff for: package.json

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"gulp-filter": "^4.0.0",
4747
"insight": "~0.8.1",
4848
"lodash": "^4.6.1",
49+
"semver": "^5.1.0",
4950
"underscore.string": "^3.1.1",
5051
"yeoman-generator": "~0.23.3",
5152
"yeoman-welcome": "^1.0.1"

Diff for: src/generators/app/index.js

+13-13
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import fs from 'fs';
44
import path from 'path';
5+
import { runCmd } from '../util';
56
import chalk from 'chalk';
67
import {Base} from 'yeoman-generator';
78
import {genBase} from '../generator-base';
@@ -10,6 +11,7 @@ import {exec} from 'child_process';
1011
import babelStream from 'gulp-babel';
1112
import beaufityStream from 'gulp-beautify';
1213
import filter from 'gulp-filter';
14+
import semver from 'semver';
1315

1416
export class Generator extends Base {
1517
constructor(...args) {
@@ -33,32 +35,30 @@ export class Generator extends Base {
3335
get initializing() {
3436
return {
3537
init: function () {
36-
var cb = this.async();
37-
3838
this.config.set('generatorVersion', this.rootGeneratorVersion());
3939
this.filters = {};
4040

4141
// init shared generator properies and methods
4242
genBase(this);
4343

44+
insight.track('generator', this.rootGeneratorVersion());
45+
this.nodeVersion = semver.clean(process.version);
46+
this.semver = semver;
47+
insight.track('node', this.nodeVersion);
48+
insight.track('platform', process.platform);
49+
4450
if(process.env.CI) {
4551
insight.optOut = true;
46-
return cb();
4752
} else if(insight.optOut === undefined) {
4853
insight.askPermission(null, cb);
49-
} else {
50-
return cb();
5154
}
55+
56+
return runCmd('npm --version').then(stdout => {
57+
this.npmVersion = stdout.toString().trim();
58+
return insight.track('npm', this.npmVersion);
59+
});
5260
},
5361
info: function () {
54-
insight.track('generator', this.rootGeneratorVersion());
55-
insight.track('node', process.version);
56-
exec('npm --version', (err, stdin, stderr) => {
57-
if(err || stderr.length > 0) return insight.track('npm', 'error');
58-
else return insight.track('npm', stdin.toString().trim());
59-
});
60-
insight.track('platform', process.platform);
61-
6262
this.log(this.yoWelcome);
6363
this.log('Out of the box I create an AngularJS app with an Express server.\n');
6464
},

Diff for: src/generators/util.js

+28
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,34 @@
33
import path from 'path';
44
import fs from 'fs';
55
import glob from 'glob';
6+
import Promise from 'bluebird';
7+
import {exec} from 'child_process';
8+
9+
const DEBUG = !!process.env.DEBUG;
10+
11+
/**
12+
* @callback doneCallback
13+
* @param {null|Error} err
14+
*/
15+
16+
/**
17+
* Run the given command in a child process
18+
* @param {string} cmd - command to run
19+
* @returns {Promise}
20+
*/
21+
export function runCmd(cmd) {
22+
return new Promise((resolve, reject) => {
23+
exec(cmd, {}, function(err, stdout, stderr) {
24+
if(err) {
25+
console.error(stdout);
26+
return reject(err);
27+
} else {
28+
if(DEBUG) console.log(`${cmd} stdout: ${stdout}`);
29+
return resolve(stdout);
30+
}
31+
});
32+
});
33+
}
634

735
function expandFiles(pattern, options) {
836
options = options || {};

Diff for: templates/app/server/config/express.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ import lusca from 'lusca';
1717
import config from './environment';<% if (filters.auth) { %>
1818
import passport from 'passport';<% } %>
1919
import session from 'express-session';<% if (filters.mongoose) { %>
20-
import connectMongo from 'connect-mongo';
20+
<%_ if(semver.satisfies(nodeVersion, '>= 4')) { _%>
21+
import connectMongo from 'connect-mongo';<% } else { _%>
22+
import connectMongo from 'connect-mongo/es5';<% } %>
2123
import mongoose from 'mongoose';
2224
var MongoStore = connectMongo(session);<% } else if(filters.sequelize) { %>
2325
import sqldb from '../sqldb';

0 commit comments

Comments
 (0)