How to require a file in node.js and pass an argument in the request method, but not to the module?

前端 未结 3 1441
梦谈多话
梦谈多话 2021-02-03 23:47

I have a module.js that must be loaded; In order to work needs objectX;

How do I pass the objectX to the module.js in the require method provided by node.js?

tha

相关标签:
3条回答
  • 2021-02-04 00:16

    The module that you write can export a single function. When you require the module, call the function with your initialization argument. That function can return an Object (hash) which you place into your variable in the require-ing module. In other words:

    main.js

    var initValue = 0;
    var a = require('./arithmetic')(initValue);
    // It has functions
    console.log(a);
    // Call them
    console.log(a.addOne());
    console.log(a.subtractOne());
    

    arithmetic.js:

    module.exports = function(initValue) {
      return {
        addOne: function() {
          return initValue + 1;
        },
        subtractOne: function() {
          return initValue - 1;
        },
      }
    }
    
    0 讨论(0)
  • 2021-02-04 00:24

    What about workaround like export some init method and pass objectX as parameter right after requiring?

    var module = require('moduleJS');
    module.init(objectX)
    
    0 讨论(0)
  • 2021-02-04 00:29

    You can avoid changing the actual exported object by chaining in an "init" method (name it whatever you want).

    Module TestModule.js:

    var x = 0; // Some private module data
    
    exports.init = function(nx) {
        x = nx; // Initialize the data
        return exports;
    };
    
    exports.sayHi = function() {
        console.log("HELLO THERE "+x);
    };
    

    And then requiring it like this:

    var TM = require('./TestModule.js').init(20);
    TM.sayHi();
    
    0 讨论(0)
提交回复
热议问题