Explanation for nested module.exports










1















I have a piece of code in an old code base that contains nested module.exports like the following. I haven't seen such a form of export before. Can some please explain or atleast point me to the right articles?



module.exports = function something(options) 

someMethod = new func1(options);

module.exports.anotherFunc = function (req, res)
someMethod.anotherFunc1(req, res);
;

module.exports.func1 = someMethod.func3;

return function func4(req, res, next)
someMethod.anotherFunc1(req, res);
next();
;
;









share|improve this question






















  • Wow! That is a bit convoluted. It kind of looks like the original developer was trying to use recursion and didn't quite know how.

    – Snake14
    Nov 12 '18 at 7:08











  • This is horrible code. Calling a function should never mutate exports. You will not find any article that recommends this.

    – Bergi
    Nov 12 '18 at 8:06
















1















I have a piece of code in an old code base that contains nested module.exports like the following. I haven't seen such a form of export before. Can some please explain or atleast point me to the right articles?



module.exports = function something(options) 

someMethod = new func1(options);

module.exports.anotherFunc = function (req, res)
someMethod.anotherFunc1(req, res);
;

module.exports.func1 = someMethod.func3;

return function func4(req, res, next)
someMethod.anotherFunc1(req, res);
next();
;
;









share|improve this question






















  • Wow! That is a bit convoluted. It kind of looks like the original developer was trying to use recursion and didn't quite know how.

    – Snake14
    Nov 12 '18 at 7:08











  • This is horrible code. Calling a function should never mutate exports. You will not find any article that recommends this.

    – Bergi
    Nov 12 '18 at 8:06














1












1








1








I have a piece of code in an old code base that contains nested module.exports like the following. I haven't seen such a form of export before. Can some please explain or atleast point me to the right articles?



module.exports = function something(options) 

someMethod = new func1(options);

module.exports.anotherFunc = function (req, res)
someMethod.anotherFunc1(req, res);
;

module.exports.func1 = someMethod.func3;

return function func4(req, res, next)
someMethod.anotherFunc1(req, res);
next();
;
;









share|improve this question














I have a piece of code in an old code base that contains nested module.exports like the following. I haven't seen such a form of export before. Can some please explain or atleast point me to the right articles?



module.exports = function something(options) 

someMethod = new func1(options);

module.exports.anotherFunc = function (req, res)
someMethod.anotherFunc1(req, res);
;

module.exports.func1 = someMethod.func3;

return function func4(req, res, next)
someMethod.anotherFunc1(req, res);
next();
;
;






javascript node.js nested nested-loops






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 12 '18 at 7:02









Rajkumar SomasundaramRajkumar Somasundaram

9381712




9381712












  • Wow! That is a bit convoluted. It kind of looks like the original developer was trying to use recursion and didn't quite know how.

    – Snake14
    Nov 12 '18 at 7:08











  • This is horrible code. Calling a function should never mutate exports. You will not find any article that recommends this.

    – Bergi
    Nov 12 '18 at 8:06


















  • Wow! That is a bit convoluted. It kind of looks like the original developer was trying to use recursion and didn't quite know how.

    – Snake14
    Nov 12 '18 at 7:08











  • This is horrible code. Calling a function should never mutate exports. You will not find any article that recommends this.

    – Bergi
    Nov 12 '18 at 8:06

















Wow! That is a bit convoluted. It kind of looks like the original developer was trying to use recursion and didn't quite know how.

– Snake14
Nov 12 '18 at 7:08





Wow! That is a bit convoluted. It kind of looks like the original developer was trying to use recursion and didn't quite know how.

– Snake14
Nov 12 '18 at 7:08













This is horrible code. Calling a function should never mutate exports. You will not find any article that recommends this.

– Bergi
Nov 12 '18 at 8:06






This is horrible code. Calling a function should never mutate exports. You will not find any article that recommends this.

– Bergi
Nov 12 '18 at 8:06













2 Answers
2






active

oldest

votes


















0














It could have been an attempt at generating modules on the fly in order to share global state across the application, however it's not clear to me how you would then import such modules. I think it's probably bad design more than anything; by the look of it these inner exports statements look totally unnecessary.






share|improve this answer






























    0














    This looks like an attempt to write an IIFE gone horribly wrong. It probably should simply be



    // module-local variable
    const someMethod = new func1(options);

    module.exports = function func4(req, res, next)
    someMethod.anotherFunc1(req, res);
    next();
    ;

    module.exports.anotherFunc = function (req, res)
    someMethod.anotherFunc1(req, res);
    ;

    module.exports.func1 = someMethod.func3;





    share|improve this answer






















      Your Answer






      StackExchange.ifUsing("editor", function ()
      StackExchange.using("externalEditor", function ()
      StackExchange.using("snippets", function ()
      StackExchange.snippets.init();
      );
      );
      , "code-snippets");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "1"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257266%2fexplanation-for-nested-module-exports%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      It could have been an attempt at generating modules on the fly in order to share global state across the application, however it's not clear to me how you would then import such modules. I think it's probably bad design more than anything; by the look of it these inner exports statements look totally unnecessary.






      share|improve this answer



























        0














        It could have been an attempt at generating modules on the fly in order to share global state across the application, however it's not clear to me how you would then import such modules. I think it's probably bad design more than anything; by the look of it these inner exports statements look totally unnecessary.






        share|improve this answer

























          0












          0








          0







          It could have been an attempt at generating modules on the fly in order to share global state across the application, however it's not clear to me how you would then import such modules. I think it's probably bad design more than anything; by the look of it these inner exports statements look totally unnecessary.






          share|improve this answer













          It could have been an attempt at generating modules on the fly in order to share global state across the application, however it's not clear to me how you would then import such modules. I think it's probably bad design more than anything; by the look of it these inner exports statements look totally unnecessary.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 12 '18 at 7:40









          customcommandercustomcommander

          1,84011019




          1,84011019























              0














              This looks like an attempt to write an IIFE gone horribly wrong. It probably should simply be



              // module-local variable
              const someMethod = new func1(options);

              module.exports = function func4(req, res, next)
              someMethod.anotherFunc1(req, res);
              next();
              ;

              module.exports.anotherFunc = function (req, res)
              someMethod.anotherFunc1(req, res);
              ;

              module.exports.func1 = someMethod.func3;





              share|improve this answer



























                0














                This looks like an attempt to write an IIFE gone horribly wrong. It probably should simply be



                // module-local variable
                const someMethod = new func1(options);

                module.exports = function func4(req, res, next)
                someMethod.anotherFunc1(req, res);
                next();
                ;

                module.exports.anotherFunc = function (req, res)
                someMethod.anotherFunc1(req, res);
                ;

                module.exports.func1 = someMethod.func3;





                share|improve this answer

























                  0












                  0








                  0







                  This looks like an attempt to write an IIFE gone horribly wrong. It probably should simply be



                  // module-local variable
                  const someMethod = new func1(options);

                  module.exports = function func4(req, res, next)
                  someMethod.anotherFunc1(req, res);
                  next();
                  ;

                  module.exports.anotherFunc = function (req, res)
                  someMethod.anotherFunc1(req, res);
                  ;

                  module.exports.func1 = someMethod.func3;





                  share|improve this answer













                  This looks like an attempt to write an IIFE gone horribly wrong. It probably should simply be



                  // module-local variable
                  const someMethod = new func1(options);

                  module.exports = function func4(req, res, next)
                  someMethod.anotherFunc1(req, res);
                  next();
                  ;

                  module.exports.anotherFunc = function (req, res)
                  someMethod.anotherFunc1(req, res);
                  ;

                  module.exports.func1 = someMethod.func3;






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 12 '18 at 8:09









                  BergiBergi

                  372k58561889




                  372k58561889



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53257266%2fexplanation-for-nested-module-exports%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                      Crossroads (UK TV series)

                      ữḛḳṊẴ ẋ,Ẩṙ,ỹḛẪẠứụỿṞṦ,Ṉẍừ,ứ Ị,Ḵ,ṏ ṇỪḎḰṰọửḊ ṾḨḮữẑỶṑỗḮṣṉẃ Ữẩụ,ṓ,ḹẕḪḫỞṿḭ ỒṱṨẁṋṜ ḅẈ ṉ ứṀḱṑỒḵ,ḏ,ḊḖỹẊ Ẻḷổ,ṥ ẔḲẪụḣể Ṱ ḭỏựẶ Ồ Ṩ,ẂḿṡḾồ ỗṗṡịṞẤḵṽẃ ṸḒẄẘ,ủẞẵṦṟầṓế