How to export class instance in Node?

Viewed 2028

Let's say, i have a class instance

const User = require(./User);

const id = '123456',
secret   = '8787';

const user = new User(id, secret)

module.exports = user;

The problem is that whenever i import user, it just returns an empty object.
Why is this occurring and what should i do in this case?

This is what i'm using for testing

index.js file

const OAuthClient = require('disco-oauth'); //class disco-oauth

const credential = require('./credential.json');

//class instance
const oauthclient = new OAuthClient(credential.id,credential.secret); 

console.log(oauthclient); //Working fine in here

module.exports = oauthclient; //exporting instance  

test.js file

const oauthclient = require('./index')
console.log(oauthclient) //prints {}
3 Answers

you should make file with name User.js and copy this code :

class user {
    constructor(id, secret){
        this.id= id,
        this.secret=secret
    }
 }

 module.exports = user;

and your file is ok for require User class (yourFile.js)

const User = require(./User);

const id = '123456',
secret   = '8787';

const user = new User(id, secret)

module.exports = user;

and you can make test.js file for import this user (yourFile.js) :

const user = require('./yourFile.js')
console.log(user)

I think the problem is in how you export your class, seems like you used module.export = User instead of module.exports= User

My node server is running in index.js file and i was trying to export the class instance from that file, that's why it didn't work.

Previous code

const http =  require('http'),
bodyparser = require('body-parser'),
OAuthClient = require('disco-oauth');

const app = require('./Api/api');    
const credential = require('./credential.json');

const oauthClient = new OAuthClient(credential.id, credential.secret);
oauthClient.setScopes(['identify', 'guilds', 'connections']);           
oauthClient.setRedirect(credential.redirect);


app.use(bodyparser.urlencoded({extended: false}))
app.use(bodyparser.json())

const server = http.createServer(app),
PORT         = 80;

server.listen(PORT,'0.0.0.0', () => {
    console.log(`running on port ${PORT}`);
})

module.exports = {
    oauthClient
}

I removed OAuthClient from index.js and moved it in separate file and it's working now.

Related