[node.js] Node.js에서 여러 module.exports 선언

내가 달성하려는 것은 여러 기능을 포함하는 하나의 모듈을 만드는 것입니다.

module.js :

module.exports = function(firstParam) { console.log("You did it"); },
module.exports = function(secondParam) { console.log("Yes you did it"); },
// This may contain more functions

main.js:

var foo = require('module.js')(firstParam);
var bar = require('module.js')(secondParam);

내가 가진 문제 firstParam는 객체 유형이고 secondParamURL 문자열이라는 것입니다.하지만 가지고있을 때 항상 유형이 잘못되었다고 불평합니다.

이 경우 여러 module.exports를 어떻게 선언 할 수 있습니까?



답변

당신은 다음과 같은 것을 할 수 있습니다 :

module.exports = {
    method: function() {},
    otherMethod: function() {},
};

아니면 그냥 :

exports.method = function() {};
exports.otherMethod = function() {};

그런 다음 호출 스크립트에서 :

const myModule = require('./myModule.js');
const method = myModule.method;
const otherMethod = myModule.otherMethod;
// OR:
const {method, otherMethod} = require('./myModule.js');


답변

여러 함수를 내보내려면 다음과 같이 나열하면됩니다.

module.exports = {
   function1,
   function2,
   function3
}

그런 다음 다른 파일로 액세스하십시오.

var myFunctions = require("./lib/file.js")

그리고 다음을 호출하여 각 함수를 호출 할 수 있습니다.

myFunctions.function1
myFunctions.function2
myFunctions.function3


답변

@mash 답변 외에도 항상 다음을 수행하는 것이 좋습니다.

const method = () => {
   // your method logic
}

const otherMethod = () => {
   // your method logic 
}

module.exports = {
    method,
    otherMethod,
    // anotherMethod
};

여기에 참고하십시오 :

  • 당신은 전화 method를 할 수 otherMethod있고 당신은 이것을 많이 필요로 할 것입니다
  • 필요할 때 메소드를 비공개로 빠르게 숨길 수 있습니다
  • 이것은 대부분의 IDE가 코드를 이해하고 자동 완성하는 것이 더 쉽습니다.)
  • 가져 오기에 동일한 기술을 사용할 수도 있습니다.

    const {otherMethod} = require('./myModule.js');


답변

이것은 내가 달성하려고했던 것이 이것에 의해 달성 될 수 있기 때문에 단지 참조 용입니다.

에서 module.js

우리는 이런 식으로 할 수 있습니다

    module.exports = function ( firstArg, secondArg ) {

    function firstFunction ( ) { ... }

    function secondFunction ( ) { ... }

    function thirdFunction ( ) { ... }

      return { firstFunction: firstFunction, secondFunction: secondFunction,
 thirdFunction: thirdFunction };

    }

에서 main.js

var name = require('module')(firstArg, secondArg);


답변

module.js :

const foo = function(<params>) { ... }
const bar = function(<params>) { ... }

//export modules
module.exports = {
    foo,
    bar
}

main.js :

// import modules
var { foo, bar } = require('module');

// pass your parameters
var f1 = foo(<params>);
var f2 = bar(<params>);


답변

파일이 ES6 내보내기를 사용하여 작성된 경우 다음을 작성할 수 있습니다.

module.exports = {
  ...require('./foo'),
  ...require('./bar'),
};


답변

이를 수행 할 수있는 한 가지 방법은 모듈을 교체하는 대신 새 객체를 작성하는 것입니다.

예를 들면 다음과 같습니다.

var testone = function () {
    console.log('test one');
};
var testTwo = function () {
    console.log('test two');
};
module.exports.testOne = testOne;
module.exports.testTwo = testTwo;

그리고 전화

var test = require('path_to_file').testOne:
testOne();