2017-07-19 23 views
4

TypeScriptでノード環境変数を読み取るにはどうすればよいですか?TypeScriptでprocess.envを使用

私はprocess.env.NODE_ENVを使用している場合、私はこのエラーがあります:

Property 'NODE_ENV' does not exist on type 'ProcessEnv' 

私は@types/nodeをインストールしましたが、それは助けにはなりませんでした。

+0

あなたのtsconfigについて – SkyAo

+0

どのタイプのTypeScriptを使用していますか? 2.2以降、これは[作業](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#dotted-property-for-types-with-string-index-signatures)です。 – jcalz

+0

"typescript": "^ 2.4.1" –

答えて

3

Nodeプロセスで使用できる環境変数があるかどうかは保証されません。NODE_ENV変数は、Node自体に組み込まれているものではなく、Expressによって広く普及した規約です。そのため、型定義に含めることは実際には意味がありません。その代わり、they define process.env like this

export interface ProcessEnv { 
    [key: string]: string | undefined 
} 

(変数が設定されていない場合、またはundefinedprocess.envが戻って文字列を取得するために、文字列にインデックスを付けることができることを意味します。あなたのエラーを修正するには、インデックスの構文を使用する必要があります:jcalzはコメントで指摘したように、あなたが活字体2.2以降を使用している場合、あるいは、

let env = process.env["NODE_ENV"]; 

を、あなたは1のようにインデックス可能なタイプにアクセスすることができます上でドット構文を使用して定義します。この場合、コードはそのまま動作するはずです。

+0

かもしれませんTypeScript 2.2以降では、インデックス付きの型に点線のプロパティでアクセスすることができます。 – jcalz

+0

@jcalz:ああ、私は知らなかった、情報ありがとう! –

+0

@jcalz私はtypescript 2.4.1を使用していますが、これを使うには何かありますか?点線の記法は私のためには機能しませんでした。 –

関連する問題