How to connect middlewares in Express - NodeJs?

1

I have problems to apply postcss-middleware after the sass-middleware in an API in express, the Sass middleware is applied but not the postcsss middleware.

import autoprefixer from 'autoprefixer';
import express from 'express';
import pug from 'pug';
import favicon from 'serve-favicon';
import sassMiddleware from 'node-sass-middleware';
import routes from './src/app/routes';
import postcssMiddleware from 'postcss-middleware';

const env        = 'development',
      port       = process.env.PORT || 3000,
      publicDir  = '${__dirname}/public',
      viewDir    = '${__dirname}/src/views',
      faviconDir = '${__dirname}/public/img/favicon.png',
      app        = express();

app
    .set( 'views', viewDir )
    .set( 'view engine', 'pug' )
    .set( 'port', port )
    .set( 'env', env )
    .use( sassMiddleware( {
        src         : '${__dirname}/src/scss',
        dest        : '${publicDir}/css',
        debug       : false,
        outputStyle : 'expanded'
    }))
    .use( '/css', postcssMiddleware( {
        src     : function ( req ) {
            return path.join( publicDir, 'css', req.path );
       },
        plugins : [
            autoprefixer( {
                browsers : 'last 2 versions'
            } )
        ]
    } ) )
    .use( express.static( '${publicDir}/css' ) )
    .use( express.static( '${publicDir}/js' ) )
    .use( favicon( faviconDir ) )
    .use( routes );

if ( app.get( 'env' ) === 'production' ) {
    app.use( ( req, res, next ) => {
        let err    = new Error( 'Not Found' );
        err.status = 404;
        next( err );
    } );

    app.use( ( err, req, res ) => {
        res.status( err.status || 500 );
        res.render( 'error', { err : err } );
    } );
}

export default app;
    
asked by Cristian Camilo Flórez 08.09.2017 в 23:37
source

0 answers