3

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 {}
6
  • What is User that you are requiring in your file? Also, how are you importing the generated user? Commented Oct 5, 2019 at 10:05
  • This is just an example code, but in reality i'm using disco oauth library . Commented Oct 5, 2019 at 10:26
  • Try console.log(user) just bellow const user = new User(id, secret). Does it print what you expect? Commented Oct 5, 2019 at 10:27
  • const user = require(./user) This is how i'm importing it. @mgarcia Commented Oct 5, 2019 at 10:27
  • yes, it is working that way. @mgarcia Commented Oct 5, 2019 at 10:32

3 Answers 3

4

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)
Sign up to request clarification or add additional context in comments.

1 Comment

class user, require as User, and new instance as user? Sounds like a bad idea to flip flop the names.
0

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

2 Comments

No, i'm using module.exports
They are not trying to export the class, they are trying to export an instance of the class.
0

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.