Nodejs - how group and export multiple functions in a separate file?

33,205

Solution 1

This would be my solution for your exporting problem! And don't mix es5 exports with es6 imports, that can get very weird - sometimes!

export const example1 = async () => {
   return 'example 1'
}

export const example2 = async () => {
   return 'example 2'
}


// other file
import { example1, example2 } from '../../example'
return example1()

Nevertheless if you have to mix them, just let me know! We can find a solution for this aswell!


More about exporting modules and what can go wrong!

MDN Exports and the a short story about the state of javascript modules

Solution 2

Below I have shared a way to declare the exporting functions in 2 different ways. Hope it helps understand the different ways in which it could be solved.

"use strict";
// utils.js

const ex1 = function() {
  console.log('ex1');
};

function ex2(context) {
  console.log('ex2');
};

module.exports = { example1: ex1, example2: ex2 };

You could invoke them in another (external) JS file (ex: app.js) as follows:

// app.js
const utils = require('./utils');

utils.example1(); // logs 'ex1'
utils.example2(); // logs 'ex2'

Solution 3

async function example1 () {
    return 'example 1'
}

async function example2 () {
    return 'example 2'
}

module.exports.example1 = example1;
module.exports.example2 = example2;

import in home.js like this:

const fun = require('./utils');
fun.example1();
Share:
33,205
Run
Author by

Run

A cross-disciplinary full-stack web developer/designer.

Updated on July 09, 2022

Comments

  • Run
    Run almost 2 years

    How can I group and export multiple functions in nodejs?

    I am trying to group all my util functions in utils.js:

    async function example1 () {
        return 'example 1'
    }
    
    async function example2 () {
        return 'example 2'
    }
    
    module.exports = { example1, example2 }
    

    And then be imported in home.js:

      import { example1, example2 } from '../utils'
    
      router.get('/', async(ctx, next) => {
        console.log(example1()) // Promise { 'example 1' }
    
      })
    

    I thought I would get 'example 1' for the test case above?

    Any ideas?