module.exports 내의 "local" 함수를 module.exports 내의 다른 함수에서 호출하시겠습니까?
어떻게 다른 함수 안에서 함수를 호출합니까?module.exports
선언?
var bla = require('./bla.js');
console.log(bla.bar());
bla.js
module.exports = {
foo: function (req, res, next) {
return ('foo');
},
bar: function(req, res, next) {
this.foo();
}
}
기능에 액세스하려고 합니다.foo
직무 내에서bar
그리고 나는 다음과 같은 것을.
유형 오류: 개체 #에 'foo' 메서드가 없습니다.
내가 바뀌면,this.foo()
정당하게foo()
이해합니다.
참조 오류: foo가 정의되지 않았습니다.
바꾸다this.foo()
로.module.exports.foo()
외부에서 기능을 선언할 수 있습니다.module.exports
블록으로 막다
var foo = function (req, res, next) {
return ('foo');
}
var bar = function (req, res, next) {
return foo();
}
그러면:
module.exports = {
foo: foo,
bar: bar
}
또한 이 작업을 수행하여 보다 간결하고 읽기 쉽게 만들 수 있습니다.제가 잘 작성된 오픈 소스 모듈 중 몇 가지에서 본 것은 다음과 같습니다.
var self = module.exports = {
foo: function (req, res, next) {
return ('foo');
},
bar: function(req, res, next) {
self.foo();
}
}
(module.) 내보내기 밖에 모듈의 글로벌 범위에 대한 참조를 저장할 수도 있습니다.일부 모듈 정의:
var _this = this;
exports.somefunction = function() {
console.log('hello');
}
exports.someotherfunction = function() {
_this.somefunction();
}
OP의 원래 스타일에 가까운 또 다른 옵션은 내보낼 객체를 변수에 넣고 해당 변수를 참조하여 객체의 다른 메서드를 호출하는 것입니다.그런 다음 변수를 내보낼 수 있습니다. 그러면 바로 사용할 수 있습니다.
var self = {
foo: function (req, res, next) {
return ('foo');
},
bar: function (req, res, next) {
return self.foo();
}
};
module.exports = self;
const Service = {
foo: (a, b) => a + b,
bar: (a, b) => Service.foo(a, b) * b
}
module.exports = Service
Node.js 버전 13부터는 ES6 모듈을 활용할 수 있습니다.
export function foo() {
return 'foo';
}
export function bar() {
return foo();
}
클래스 접근 방식을 따릅니다.
class MyClass {
foo() {
return 'foo';
}
bar() {
return this.foo();
}
}
module.exports = new MyClass();
노드의 모듈 캐싱으로 인해 클래스가 한 번만 인스턴스화됩니다.
https://nodejs.org/api/modules.html#modules_caching
당신의 문제를 해결하기 위해, 나는 bla.js에 약간의 변경을 가했고 그것은 작동하고 있습니다.
var foo= function (req, res, next) {
console.log('inside foo');
return ("foo");
}
var bar= function(req, res, next) {
this.foo();
}
module.exports = {bar,foo};
그리고 app.js에 수정 사항이 없습니다.
var bla = require('./bla.js');
console.log(bla.bar());
내가 하는 일은 독립 실행형을(를)foo
기능하고 두 장소 모두에서 참조합니다.
그런 식으로, 그것은 어떠한 문제도 방지합니다.this
화살표 또는 정규 함수의 사용에 관계없이
function foo(req,res,next) {
return ('foo');
}
그럼 제가 참고할게요foo
두 곳에서
module.exports = {
foo, // ES6 for foo:foo
bar: function(req, res, next) {
foo();
}
}
만약 당신이 이렇게 한다면, 당신은 당신의 것을 잃게 될 것입니다.this
호출 함수 내부의 개체 참조입니다.예:
module.exports.a = function () {
return true
}
module.exports.b = function() {
return this.a();
}
여기서 당신은 이것을 부를 때 그것이 참조하고 있기 때문에 문제를 얻을 것입니다.this
의 목적.b
기능.
이 문제를 해결하려면 저장해야 합니다.this
화살표 함수에는 자체 함수가 없기 때문에 개체 참조 또는 화살표 함수를 사용this
항상 외부를 참조할 수 있도록 합니다.this
물건
이 문제를 해결하기 위해, 당신의 기능을 다음과 같이 수정하세요.
module.exports.a = function () {
return true
}
module.exports.b = () => {
return this.a();
}
언급URL : https://stackoverflow.com/questions/10462223/call-a-local-function-within-module-exports-from-another-function-in-module-ex
'programing' 카테고리의 다른 글
코드사인이 키 체인의 키 "액세스"에 액세스하고 싶어합니다. 로그인 암호를 입력했지만 계속 묻습니다. (0) | 2023.05.18 |
---|---|
Windows 명령줄에서 Git Bash를 시작하는 방법 (0) | 2023.05.18 |
__init__에서 wait와 함께 클래스 속성을 설정하는 방법 (0) | 2023.05.18 |
목록이 얼마나 정렬되어 있는지 측정할 수 있는 방법이 있습니까? (0) | 2023.05.18 |
UI 레이블 텍스트 여백 (0) | 2023.05.18 |