WestCoastProjects
WestCoastProjects

Reputation: 63022

Unable to export a function from a custom node.js module

I am testing out a simple node.js custom module represetned by the processTest.js file in the node.js root directory. Here is its contents: notice that the module.exports includes the one function processTest():

'use strict';

const { spawn } = require( 'child_process' );
const ls = spawn( 'ls', [ '-lh', '/usr' ] );

function runTest() {
  ls.stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);
  });

  ls.stderr.on('data', (data) => {
    console.log(`stderr: ${data}`);
  });

  ls.on('close', (code) => {
    console.log(`child process exited with code ${code}`);
  });
}
module.exports = runTest;

In the main node.js script we try to invoke it as follows:

const processTest = require("./processTest")

...

http.createServer(app).listen(port, '0.0.0.0', function () {
  console.debug(`HTTP: Listening on ${port} ..`)
  processTest.runTest();
})

However we get the error

Uncaught TypeError: processTest.runTest is not a function

note that the processTest module is actually present and the function is visible.

enter image description here What is wrong here and how should it be corrected?

Upvotes: 1

Views: 329

Answers (1)

pxDav
pxDav

Reputation: 1814

You are referring to the function in the processTest file. (module.exports = runTest). Use require("./processTest")()

Or just change the module.exports to

module.exports = {
    runTest
}

and require("./processTest").runTest() will work

Upvotes: 2

Related Questions