Digvijay
Digvijay

Reputation: 3281

Unable to export module in another file in nodejs

I am trying to create some dummy function in nodejs and trying to export it in another file but when I am running it using node index.js it might some sort of silly mistake but its showing error that:

TypeError: spr.comb is not a function

Below is my code:

spread.js

const comb = () => {
   const arr = [4,5,6];
   const newArr = [1,2,3,...arr];
   console.log(newArr);
}

module.exports = comb;

index.js

const spr =  require('./spread');
spr.comb();  

Someone let me know what I am doing wrong.

Upvotes: 3

Views: 2742

Answers (4)

mpmcintyre
mpmcintyre

Reputation: 717

If the function is not a default export you would need to surround it with curly braces in your main file like so:

const {spr} =  require('./spread');
spr.comb(); 

Upvotes: 0

Furqan Anwar
Furqan Anwar

Reputation: 45

Can't use a user defined name here because you have exported comb from your spread file

const spr =  require('./spread'); 
spr.comb();

Use this instead

const comb = require('./spread');

If you want to use custom name you need to modify your spread file like this

module.exports = () => {
   const arr = [4,5,6];
   const newArr = [1,2,3,...arr];
   console.log(newArr);
}

Now you are exporting a function from spread, while importing/ including it in index.js you can provide a custom name to this function.

const {custom name comes here}=  require('./spread');

For Example

const comb = require('./spread');
const myCombFn = require('./spread');

Upvotes: 1

Alireza Khaki
Alireza Khaki

Reputation: 21

you can do it like this(in spread.js):

const comb = module.exports.comb = () => {
const arr = [4, 5, 6];
const newArr = [1, 2, 3, ...arr];
console.log(newArr);
}

Upvotes: 1

Yousaf
Yousaf

Reputation: 29344

Problem is that you have completely overwritten the module.exports object.

module.exports is an empty object to which you can add the values to export from a module.

In your case, you have re-assigned the module.exports to comb function. So, to call the function, change

spr.comb(); 

to

spr(); 

For spr.comb() to work, you need to export the comb function as shown below:

module.exports.comb = comb;

or

exports.comb = { ... }

Upvotes: 3

Related Questions