TypeScriptバージョン1.7.5を使用します。
ユーザーから渡されたコマンドライン引数(2つの整数)を読み込むnodeJSプログラムを作成しています。未加工のJavaScriptではすべて正常に動作しますが、TypeScriptで問題が発生します。
いつ
process.argv
エラーTS2304:名前 'process'が見つかりません
ファイルの先頭で新しいvar "process"を宣言しようとしましたが、それはネイティブ変数をオーバーライドし、引数を含まなくなりました...
すべてのコードをTypeScriptで保持し、ビルド時にJavaScriptのみにコンパイルしたいと思います。この問題の最善の回避策は何ですか?
Nodeの型定義が利用可能であることを確認する必要があります。これを行う方法は、使用しているTypeScriptのバージョンによって異なります。
Typings を使用して、定義をインストールします。
typings install --save --global env~node
typings/index.d.ts
ファイルには必ずtsconfig.json
を含めてください。 "files"
配列に含める:
"files": ["typings/index.d.ts"]
または、"exclude"
配列から省略されていることを確認してください。
TypeScript 2では、定義を npmでインストール@types
スコープの下に置くことができます。
npm install --save-dev @types/node
適切な型定義が利用可能であることを確認する必要があります。これには 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" />
この質問は「名前 'process'が見つかりません」を検索する際のGoogle結果の一番上にあるため、ここではあまり関係のない問題に2セントを追加します。
if(process.env.NODE_ENV === "production")
を使用してwebpackで本番環境のコードを削除するときにエラーを取り除く必要がある場合は、次の宣言を行の前に追加してください。
declare var process: {
env: {
NODE_ENV: string
}
};
TypeScript 2-Windowsユーザー
この質問は「ts2304が名前 'process'を見つけることができません」のGoogleの上部にあるため、Windowsユーザー向けのヘルプを追加します。構成ファイルから環境変数を使用しようとして、このエラーが発生しました。
TSError:TypeScriptをコンパイルできません。
名前 'process'が見つかりません-(2304)
最終的にこれを私のtsconfig.jsonに追加しました:
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types"
]
}
}
これは、同じディレクトリレベルのtsconfig.jsonとnode_modulesを使用していましたが、何らかの理由でコンパイラがそれを認識していませんでした。奇妙なことに、このエラーはprocess.env変数でのみ発生し、残りのコードはコンパイルに問題がありませんでした。
OSXでの私の完全なソリューションは、error TS2304: Cannot find name 'process'.
私のユースケースは、部分的に移行したReact jsx/jsからtsx/tsへのプロジェクトです。
yarn add -D @types/node
tsconfig.json
含める "typeRoots": ["./node_modules/@types"]
import { } from 'node';
エラーのあるファイルの先頭TypeScript v2.7.1を使用する場合、3つのステップすべてが必要でした
私はこの問題に遭遇し、プロセス呼び出しを含むファイルに次を追加する必要がありました。
import { } from 'node';
その時点でプロセスを認識しました