web-dev-qa-db-ja.com

コマンドラインから引数を読み取る-エラーTS2304:名前 'process'が見つかりません

TypeScriptバージョン1.7.5を使用します。

ユーザーから渡されたコマンドライン引数(2つの整数)を読み込むnodeJSプログラムを作成しています。未加工のJavaScriptではすべて正常に動作しますが、TypeScriptで問題が発生します。

いつ

process.argv
エラーTS2304:名前 'process'が見つかりません

ファイルの先頭で新しいvar "process"を宣言しようとしましたが、それはネイティブ変数をオーバーライドし、引数を含まなくなりました...

すべてのコードをTypeScriptで保持し、ビルド時にJavaScriptのみにコンパイルしたいと思います。この問題の最善の回避策は何ですか?

36
Rohit Falor

更新:2016年9月

Nodeの型定義が利用可能であることを確認する必要があります。これを行う方法は、使用しているTypeScriptのバージョンによって異なります。

TypeScript 1

Typings を使用して、定義をインストールします。

typings install --save --global env~node

typings/index.d.tsファイルには必ずtsconfig.jsonを含めてください。 "files"配列に含める:

"files": ["typings/index.d.ts"]

または、"exclude"配列から省略されていることを確認してください。

TypeScript 2

TypeScript 2では、定義を npmでインストール@types スコープの下に置くことができます。

npm install --save-dev @types/node

元の回答:2016年2月

適切な型定義が利用可能であることを確認する必要があります。これには typings パッケージマネージャーを使用します。次のようにノードの定義をインストールします。

typings install --save --ambient node

現在、定義がコンパイラで利用可能であることを確認できるいくつかの方法があります。推奨される方法は tsconfigファイルを設定する です。

{
  "exclude": [
    "typings/browser.d.ts",
    "typings/browser",
    "node_modules"
  ]
}

または、代わりに:

{
  "files": [
    "typings/main.d.ts"
  ]
}

Tsconfigファイルを使用していない場合は、メインエントリファイルの上部にある参照を次のように使用できます。

/// <reference path="path/to/typings/main.d.ts" />
48
McMath

この質問は「名前 'process'が見つかりません」を検索する際のGoogle結果の一番上にあるため、ここではあまり関係のない問題に2セントを追加します。

if(process.env.NODE_ENV === "production")を使用してwebpackで本番環境のコードを削除するときにエラーを取り除く必要がある場合は、次の宣言を行の前に追加してください。

declare var process: {
   env: {
       NODE_ENV: string
   }
};
10
Honza Kalfus

TypeScript 2-Windowsユーザー

この質問は「ts2304が名前 'process'を見つけることができません」のGoogleの上部にあるため、Windowsユーザー向けのヘルプを追加します。構成ファイルから環境変数を使用しようとして、このエラーが発生しました。

TSError:TypeScriptをコンパイルできません。

名前 'process'が見つかりません-(2304)

最終的にこれを私のtsconfig.jsonに追加しました:

{
  "compilerOptions": {
    "typeRoots": [
      "./node_modules/@types"
    ]
  }
}

これは、同じディレクトリレベルのtsconfig.jsonとnode_modulesを使用していましたが、何らかの理由でコンパイラがそれを認識していませんでした。奇妙なことに、このエラーはprocess.env変数でのみ発生し、残りのコードはコンパイルに問題がありませんでした。

9
Kevin Collins

OSXでの私の完全なソリューションは、error TS2304: Cannot find name 'process'.私のユースケースは、部分的に移行したReact jsx/jsからtsx/tsへのプロジェクトです。

  1. yarn add -D @types/node
  2. 更新しました tsconfig.json 含める "typeRoots": ["./node_modules/@types"]
  3. 含むimport { } from 'node';エラーのあるファイルの先頭

TypeScript v2.7.1を使用する場合、3つのステップすべてが必要でした

5
Simeon

私はこの問題に遭遇し、プロセス呼び出しを含むファイルに次を追加する必要がありました。

import { } from 'node';

その時点でプロセスを認識しました

3