user3142695
user3142695

Reputation: 17332

How to split expressJS server code into different files

This is just a part of my express server. I would like to split the code to different files.

import express from 'express'
const app = express()

app.get('/import', async (req, res) => {
  var fs = require('fs')

  fs.createReadStream('./src/data.csv')
    .pipe(parse({
      delimiter: ',',
      skip_lines_with_error: true
    }))
    .on('error', function (err) { console.log(err) })
    .on('data', async function (row) {
      // do a lot of stuff here
    })

  res.status(200)
})

In this case the import should be imported from another file, but I don't know how to do that.

helper/import.js

export const import = (req, res) => {
  var fs = require('fs')

  fs.createReadStream('./src/data.csv')
    .pipe(parse({
      delimiter: ',',
      skip_lines_with_error: true
    }))
    .on('error', function (err) { console.log(err) })
    .on('data', async function (row) {
      // do a lot of stuff here
    })

  res.status(200)
}

server.js

import express from 'express'
const app = express()

app.get('/import') // <-- ?? 

How do I get the async function here?

Upvotes: 1

Views: 1349

Answers (2)

user884321
user884321

Reputation: 477

You don't have to use router in order to do this, here is a simpler version, hope it helps.

import.js

const import = (req, res) => {
  //...
};

module.exports = {import};

server.js

const {import} = require('./import.js');

app.get('/import', import);

Upvotes: 0

Adrian
Adrian

Reputation: 8597

So you basically want to put routes in a different file.

I tend to create a folder with all my 'routes' in.

Let's use import.js as an example.. here's what the file would look like:

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  var fs = require('fs')

  fs.createReadStream('./src/data.csv')
    .pipe(parse({
      delimiter: ',',
      skip_lines_with_error: true
    }))
    .on('error', function (err) { console.log(err) })
    .on('data', async function (row) {
      // do a lot of stuff here
    })

  res.status(200)
});

module.exports = router;

Your server.js would then implement that...

const importRouter = require("./helper/import.js");

app.use('/import', importRouter);

Upvotes: 1

Related Questions