2015-06-04 13 views
5

Ho installato il modulo di node-sass-middleware relativa alla mia domanda espressa, ma non sto ottenendo che il lavoro, solo perché il middleware sta leggendo una fonte non corretta, quando il debug il log della console è:Perché node-sass-middleware non funziona?

GET/200 558.983 ms - 4651 
    source: /home/karim/Snippets/my-financial/public/stylesheets/sass/stylesheets/main.sass 
    dest: /home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css 
    read: /home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css 

che entrambe le directory sono errati, perché il middleware sta aggiungendo la stringa tra lo source/dest (..public/stylesheets/sass/) e lo .sass file/.css file (main.sass e main.css)?

Ho questa configurazione all'interno del mio app.js:

var sassMiddleware = require('node-sass-middleware'); 
... 
... 
var app = express(); 

app.use(sassMiddleware({ 
    src: path.join(__dirname, 'public/stylesheets/sass'), 
    dest: path.join(__dirname, 'public/stylesheets'), 
    debug: true, 
    indentedSyntax: true, 
    outputStyle: 'compressed' 
})); 

Ovviamente questo non è la compilazione nulla, becuase le directory sono sbagliate. All'interno della cartella ..public/stylesheets/sass/ ho solo un file, main.sass che voglio compilare e spostare il risultato all'esterno della cartella sass/, cioè a ..public/stylesheets/.

risposta

6

Questo perché - io sono abbastanza sicuro - sul vostro file html c'è qualcosa di simile:

<head> 

    <!--All your head stuff and--> 
    <link rel="stylesheet" href="/stylesheets/main.css"/> 

</head> 

- consente di chiamare che href come yourAwesomeHref per un momento.

Quando il server riceve alcuna richiesta di get, il middleware cercherà il compilatomain.sass su /home/karim/Snippets/my-financial/public/stylesheets (dest opzione per il middleware) seguito da yourAwesomeHref, con conseguente questo percorso:

/home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css 

che quel file, ovviamente, non esiste affatto! Quindi devi aggiungere prefix: "/stylesheets" sul middleware per evitare questo problema.

Il codice finale è:

var sassMiddleware = require('node-sass-middleware'); 
... 
... 
var app = express(); 

app.use(sassMiddleware({ 
    src: path.join(__dirname, 'public/stylesheets/sass'), 
    dest: path.join(__dirname, 'public/stylesheets'), 
    debug: true, 
    indentedSyntax: true, 
    outputStyle: 'compressed', 
    prefix: '/stylesheets' 
})); 
+0

hai salvato la vita: D –