2017-12-16 1 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と書いてありますので、私はあなたがNodeを使用していると仮定しています。

export const SourceFilename = __filename; 

注ノードの__filenameなしていることを行うには、インスペックな方法はありません(ただし、そこに1 under considerationだと合理的にはるかに追加さへの道ダウン)taht:Userを提供するモジュールは、次のようにその情報を提供することができます。更新質問の


更新答え:この情報を提供するクラス(コンストラクタ)に保存されている何もUserはありません。だから再びUserを定義するコードは、その情報を(モジュールから取得して別個にデコレータなどに渡すことができるものとしてUserのプロパティとして)提供する必要があります。それ以外の場合、それはあなたに利用できません。

+0

ご提案いただきありがとうございます。残念ながら、クラスに適用されているデコレータ内でファイル名を取得しようとしているので、ユースケースをあまりにも一般化しようとしたことに気づかなければなりませんでした。私は質問を更新します。申し訳ありません。 – Chris

+0

@Chris:基本的に同じ回答です(私は更新しました):モジュールが情報を利用可能にしない限り、あなたはそれを使用することはできません。 –

+1

素晴らしいヒント。明示的にex/importしなくてもアクセスできるプロパティとして、ファイル名をクラスに追加することができます。 – Chris

関連する問題