Reputation: 57256
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?
Upvotes: 8
Views: 37916
Reputation: 41
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();
Upvotes: 2
Reputation: 2560
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'
Upvotes: 7
Reputation: 2435
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
Upvotes: 18