JSDoc not recognizing exported function

1.2k views Asked by At

I'm making a node.js project, and work in Webstorm, where functions are usually highlighted in yellow. However in the following scenario, fnA is not recognized as a function in file b.

//file a.js
module.exports = fnA;

/**
 * Converts val to someOtherVal
 * @param val
 * @return someOtherVal
 */

function fnA( val ){
   //Do something with val....
   return someOtherVal
}

//file b.js

var fnA = requires('./a.js');

function fnB() {
  var c = fnA(3); //<- not recognized as a function
}

However if I wrap the function in a namespace, it works properly:

 //a.js
 module.exports = fnA;

/**
 * Converts val to someOtherVal
 * @param val
 * @memberof core
 */

function fnA( val ){
   //Do something with val....
   return someOtherVal
}
__________________________________________________
//b.js
/**
 * @namespace
 */
var core = {
   fnA : requires('./a.js')
}


function b() {
  var c = core.fnA(3); //Recognized as a function
}

I would like to avoid wrapping the function in a namespace - what is the proper way to jsdoc the function in the first example?

1

There are 1 answers

0
appsmatics On

same issue in JSDoc 3.6.6 (functions defined with an export not recognized)

Workaround: Define functions without export and export an object.

//file.js
const function1 = () => {
  ...
}
const function2 = () => {
  ...
}

export {
  function1,
  function2
}