8
votes

Nœud-Sass ne compilait pas avec noeud / express

J'essaie d'obtenir des nœuds de travailler avec Express, et je ne peux tout simplement pas l'obtenir de compiler du tout. Ceci est mon fichier APP.JS:

var express = require('express')
  , sass = require('node-sass')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(sass.middleware({
     src: __dirname + '/public/sass',
     dest: __dirname + '/public/stylesheets', 
     debug: true
  }));
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('your secret here'));
  app.use(express.session());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});


0 commentaires

3 Réponses :


8
votes

C'est aussi déroutant que le middleware Stylus (par lequel il est inspiré, il est dit).

La structure de dossier de SRC code> doit imiter la structure éventuelle de la destination et em> le chemin que vous utilisez pour demander le fichier CSS. Si vous souhaitez que vos fichiers CSS soient stockés comme ceci: p> xxx pré>

et l'URL pour accéder au fichier sera le suivant: p> xxx pré>

Vous devez configurer le middleware comme ceci: P>

./public/sass/stylesheets/app.scss
  • Prenez le chemin de la requête HTTP: /stylesheets/app.css code> li>
  • Pour trouver le fichier SCSS, concaténer le chemin d'accès de l'URL sur src code> et remplacer l'extension: ./ Public / Sass / StylesSheets / APP.SSSS CODE> LI>
  • Pour la destination, concaténer le chemin d'accès à l'URL sur DEST CODE>: ./ Public / StylesSheets / App.css Code> LI> ul> p>


6 commentaires

Cela a du sens, mais malheureusement, cela ne fonctionne toujours pas. Les fichiers SCSS ne sont toujours jamais compilés.


J'utilise presque votre code ( GIST ) et cela fonctionne Tout simplement bien (y compris le re-rendu lorsque le fichier SCSS est modifié). Peut-être un problème d'autorisation?


C'est vraiment étrange. J'ai la même structure de configuration et de répertoire, mais cela ne fonctionne tout simplement pas pour moi. Tant pis. Je vais continuer à utiliser mon gemme de compas.


Essayez-vous des fichiers SASS ou des fichiers SCSS? Node-Sass ne peut gérer que des fichiers SCSS, car la libsass, la bibliothèque C assis sous elle, ne fait que SCSS. C'est probablement un projet lourd pour ajouter des fonctionnalités de Sass à la libsass, et le temps de chacun est court.


Je fais aussi quelque chose de similaire, et il ne faut pas atteindre le "rendu": gist.github.com / Clusterfoo / 7585484


J'utilise Stylus, et cela corrige mon problème. Je n'aurais jamais compris comment ils manipulaient des chemins !!!



1
votes

J'avais des problèmes similaires pour faire fonctionner le middleware du noeud-Sass. J'ai finalement abandonné et essayé asset-rack que j'étais également incapable de travailler jusqu'à ce que je commence à utiliser Cette fourchette: https://github.com/techpines/asset-rack/pull/76 < / a>

frustré par le fait que la demande de traction pour la fourchette de rack d'actif était assise pendant 11 mois, je me suis retrouvé juste écrire mon propre middleware statique du fichier statique appelé l'électricité qui prend en charge les Sass parmi d'autres personnes agréables à avoir des fonctionnalités.


0 commentaires

2
votes

Essayez d'utiliser l'option PREFIX:

app.use(sass.middleware({
    src: __dirname + '/public/sass',
    dest: __dirname + '/public', 
    prefix:  '/stylesheets'
    debug: true
}));


0 commentaires