2017-12-16 17 views
1

를 포함하는 파일의 파일 이름을 얻을 일반적인 생각. 그러나 실제 사용 사례가 장식을 기반으로합니다JS 내가 가져온 클래스의 파일 이름을 얻을 필요가 클래스 정의

import someDecorator from './decorator' 

@someDecorator 
class User { 
} 

fileA.js 정보가 기본적으로 당신에게 사용할 수 없음을

export default function (target) { 
    // can I somehow get the target filename without passing it as a property? 
} 

답변

1

decorator.js, 문제의 모듈 것 정보에 액세스하는 수단을 제공해야합니다.

__filename을 언급 했으므로 노드를 사용하고 있다고 가정합니다. 이 같은 정보를 제공 할 수 User를 제공하는 모듈 :

export const SourceFilename = __filename; 

주에는 인 - 스펙 방식으로 노드의 __filename없이 (그러나 1 under consideration 합리적까지 추가되는 방향으로 경로 아래로있다)을하는 것이이 할 수 없습니다 것 taht를. 업데이트 된 질문에 대한


업데이트 답 :이 정보를 제공하는 클래스 (생성자)에 저장 아무것도 User가 없습니다. 다시 한 번, User을 정의하는 코드는 그 정보를 (모듈에서 가져 와서 별개로 데코레이터 등에 전달할 수있는 것으로서 User의 속성으로) 제공해야합니다. 그렇지 않으면 단순히 사용할 수 없습니다.

+0

제안 해 주셔서 감사합니다. 불행하게도 클래스에 적용된 데코레이터 내에서 파일 이름을 얻으려고하기 때문에 유스 케이스를 너무 많이 일반화하려고 시도했음을 깨달아야했습니다. 나는 그 질문을 갱신 할 것이다. 죄송합니다 – Chris

+0

@Chris : 기본적으로 동일한 답변 (업데이트했습니다) : 모듈이 정보를 제공하지 않는 한, 귀하는 그 정보를 사용할 수 없습니다. –

+1

좋은 힌트. 명시 적으로 ex/import하지 않고 액세스 할 수있는 속성으로 파일 이름을 클래스에 추가 할 수 있습니다. – Chris