Comment utiliser itinéraire personnalisé middleware avec Sails.js? (ExpressJS)

Je l'ai juste déballé une nouvelle copie du Nœud cadre Sails.js. Il est construit sur Express 3. Dans l' /config/routes.js fichier ce commentaire:

/**
 * (1) Core middleware
 *
 * Middleware included with `app.use` is run first, before the router
 */


/**
 * (2) Static routes
 *
 * This object routes static URLs to handler functions--
 * In most cases, these functions are actions inside of your controllers.
 * For convenience, you can also connect routes directly to views or external URLs.
 *
 */

module.exports.routes = { ...

Dans le même dossier config, j'ai créé le fichier appelé is_ajax.js.

//Only run through API on ajax calls.
module.exports.isAjax = function(req, res, next){
  if (req.headers['x-requested-with']) {
    //Allow sails to process routing
    return next();
  } else {
    //Load main template file
    //...
  }
};

Mon but est de faire de la non-Ajax OBTENIR toutes les demandes de charger le même fichier de modèle donc, mon CanJS application peut définir l'état de l'application en fonction de l'URL (donc mon javascript de l'application est correctement signet-mesure).

Je voudrais lancer ce script en tant que middleware. Quelqu'un peut-il svp me montrer comment utiliser l'app.usage() dans ce cas is_ajax.js script à exécuter avant d'autres routage?

Je suppose que c'est quelque chose comme

var express = require('express');
var app = express();
app.use( require('./is_ajax') );

Que lorsque je fais ci-dessus, il me dit qu'il ne trouve pas le module express. J'ai vérifié que l'express est un module à l'intérieur Voiles " node_modules. Est-il une autre syntaxe pour le chargement? Je préfère ne pas avoir à installer un deuxième exemplaire de l'express aux côtés de voiles. Est-il un moyen d'accéder à l'original Voiles/Express instance de l'application?

OriginalL'auteur Marshall Thompson | 2013-08-31