Trying to export function without success with JavaScript, Node.js

181 views Asked by At

I'm trying to learn Node.js and I have a pretty good app now, but I wanted to implement a library (venom-bot) to send some text messages. My problem is that I'm having trouble trying to use functions outside the primary file. Here is my code:

// Dependencies
const server = require("./lib/server")
const venom = require("venom-bot")

// Declare the app
const app = {}

// Init function
app.init = () => {
    // Start the server
    server.init()
}

// Init venom-bot
venom.create().then((client) => start(client))

// A function to test if I can send the message
async function testing(msg) {
    await msg.sendText(...some code here...)
}

function start(client) {
    app.msg = client

    // Here, if I pass app.msg as an argument, works
    // My problem is that I can't use app.msg outside of here,
    // even with the module.exports down there
    // (I'm trying to use it on a helpers.js file).
    testing(app.msg)

    // Execute the application
    app.init()
}

// Export the app
module.exports = app

On the helpers.js file I'm requiring it this way:

// Dependencies
const app = require("./index.js")

// A function to test
async function sendMsg(msg) {
    await msg.sendText(...some code here...)
}

helpers.send = () => {
    sendMsg(app.msg)
}

module.exports = helpers

Whenever helpers.send gets invoked, it should correctly use the async function right above the helpers.send passing the app.msg as argument, at least I think it should. What I'm missing here?

The error I got is:

(node:18148) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'sendText' of undefined

On testing purpose, I'm trying to simple call that helper when I receive a get request to a specified route.

0

There are 0 answers