examples/mvc/lib/boot.js JAVASCRIPT 84 lines View on github.com → Search inside
1'use strict'23/**4 * Module dependencies.5 */67var express = require('../../..');8var fs = require('node:fs');9var path = require('node:path');1011module.exports = function(parent, options){12  var dir = path.join(__dirname, '..', 'controllers');13  var verbose = options.verbose;14  fs.readdirSync(dir).forEach(function(name){15    var file = path.join(dir, name)16    if (!fs.statSync(file).isDirectory()) return;17    verbose && console.log('\n   %s:', name);18    var obj = require(file);19    var name = obj.name || name;20    var prefix = obj.prefix || '';21    var app = express();22    var handler;23    var method;24    var url;2526    // allow specifying the view engine27    if (obj.engine) app.set('view engine', obj.engine);28    app.set('views', path.join(__dirname, '..', 'controllers', name, 'views'));2930    // generate routes based31    // on the exported methods32    for (var key in obj) {33      // "reserved" exports34      if (~['name', 'prefix', 'engine', 'before'].indexOf(key)) continue;35      // route exports36      switch (key) {37        case 'show':38          method = 'get';39          url = '/' + name + '/:' + name + '_id';40          break;41        case 'list':42          method = 'get';43          url = '/' + name + 's';44          break;45        case 'edit':46          method = 'get';47          url = '/' + name + '/:' + name + '_id/edit';48          break;49        case 'update':50          method = 'put';51          url = '/' + name + '/:' + name + '_id';52          break;53        case 'create':54          method = 'post';55          url = '/' + name;56          break;57        case 'index':58          method = 'get';59          url = '/';60          break;61        default:62          /* istanbul ignore next */63          throw new Error('unrecognized route: ' + name + '.' + key);64      }6566      // setup67      handler = obj[key];68      url = prefix + url;6970      // before middleware support71      if (obj.before) {72        app[method](url, obj.before, handler);73        verbose && console.log('     %s %s -> before -> %s', method.toUpperCase(), url, key);74      } else {75        app[method](url, handler);76        verbose && console.log('     %s %s -> %s', method.toUpperCase(), url, key);77      }78    }7980    // mount the app81    parent.use(app);82  });83};

Code quality findings 19

Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var express = require('../../..');
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var fs = require('node:fs');
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var path = require('node:path');
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var dir = path.join(__dirname, '..', 'controllers');
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var verbose = options.verbose;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var file = path.join(dir, name)
Remove debugging statements or use a logging library
info correctness console-log
verbose && console.log('\n %s:', name);
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var obj = require(file);
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var name = obj.name || name;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var prefix = obj.prefix || '';
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var app = express();
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var handler;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var method;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
var url;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
for (var key in obj) {
Use let instead of var in loops to avoid scope issues
info correctness var-in-loop
for (var key in obj) {
Ensure all cases are handled or a default case is present
info correctness switch-without-default
switch (key) {
Remove debugging statements or use a logging library
info correctness console-log
verbose && console.log(' %s %s -> before -> %s', method.toUpperCase(), url, key);
Remove debugging statements or use a logging library
info correctness console-log
verbose && console.log(' %s %s -> %s', method.toUpperCase(), url, key);

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.