Reputation: 3281
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
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
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
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
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