How to serve static images/files with correct mime types on express server

Viewed 690

I want to serve everything in ../assets folder with correct mime-types. Static images are served with incorrect mime-types.

Here is my server code:

const expressStaticGzip = require('express-static-gzip');
const path = require('path');
const fs = require('fs');
const express = require('express');

const server = express();

if (process.env.mode === 'development') {
  const webpack = require('webpack');
  const config = require('../webpack.config');
  const compiler = webpack(config);

  server.use(require('webpack-dev-middleware')(compiler, {
    publicPath: config.output.publicPath, 
    HotModuleReplacement: true
  }));

  server.use(require('webpack-hot-middleware')(compiler));
  server.use('*', (req, res, next) => {
    const appIndex = path.resolve(compiler.outputPath, 'index.html');

    compiler.outputFileSystem.readFile(appIndex, (err, result) => {
      if (err) next();
      res.end(result);
    });
  });
} else if (process.env.mode === 'production') {

  server.use(express.static(path.join(__dirname, '../assets')));
  server.use(expressStaticGzip(path.join(__dirname, '../public'), {
    enableBrotli: true
  }));  

  server.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, '../public/index.html'));
  });
}

server.listen(process.env.port, () => {
  console.log(`Listening on the port ${process.env.port}...`);
});

Here is my folder structure:

[root]
|..[assets]
|....[images]
|......[png]
|........[myImaage.png]
|..[server]
|....[server.js]

What I tried:

server.use(express.static(path.join(__dirname, '../assets')));
server.use(express.static(path.resolve(__dirname, '../assets')));
server.use('/assets', express.static(path.join(__dirname, '../assets')));
0 Answers
Related