web-dev-qa-db-fra.com

Lire les arguments à partir de la ligne de commande - erreur TS2304: impossible de trouver le nom 'processus'

Utilisation de TypeScript version 1.7.5.

J'écris un programme nodeJS dans lequel je veux lire des arguments en ligne de commande passés par l'utilisateur (2 entiers). Tout fonctionne bien en JavaScript brut, mais un problème survient avec TypeScript.

Quand

process.argv
erreur TS2304: Impossible de trouver le nom "processus"

J'ai essayé de déclarer un nouveau "processus" var en haut du fichier, mais cela remplace la variable native et ne contient plus les arguments ...

Je voudrais garder tout mon code en TypeScript, en ne le compilant qu'en JavaScript au moment de la construction. Quelle est la meilleure solution de contournement pour ce problème?

36
Rohit Falor

Mise à jour: septembre 2016

Vous devez vous assurer que les définitions de type pour Node sont disponibles. La façon de procéder dépend de la version de TypeScript que vous utilisez.

TypeScript 1

Utilisez Typings pour installer les définitions.

typings install --save --global env~node

N'oubliez pas d'inclure typings/index.d.ts dans votre tsconfig.json fichier. Soit l'inclure dans le "files" tableau:

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

Ou assurez-vous qu'il est omis du "exclude" tableau.

TypeScript 2

Dans TypeScript 2, les définitions peuvent être installées via npm sous @types portée.

npm install --save-dev @types/node

Réponse originale: février 2016

Vous devez vous assurer que les définitions de type appropriées sont disponibles. Utilisez pour cela le gestionnaire de paquets typings . Installez les définitions de nœud comme suit:

typings install --save --ambient node

Maintenant, il existe plusieurs façons de vous assurer que les définitions sont disponibles pour le compilateur. La méthode préférée est de configurer votre fichier tsconfig comme ceci:

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

Ou bien:

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

Si vous n'utilisez pas de fichier tsconfig, vous pouvez utiliser une référence en haut de votre fichier d'entrée principal, comme ceci:

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

Cette question est en haut des résultats de Google lorsque vous recherchez "Impossible de trouver le nom" processus "", je vais donc ajouter mes 2 cents à un problème pas trop lié ici.

Si vous devez vous débarrasser de l'erreur lors de l'utilisation de if(process.env.NODE_ENV === "production") pour supprimer du code en production avec webpack, ajoutez simplement la déclaration suivante avant la ligne:

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

TypeScript 2 - Utilisateurs Windows

Étant donné que cette question est en haut de Google pour "ts2304 ne peut pas trouver le nom" processus "", je veux ajouter de l'aide pour les utilisateurs de Windows. J'essayais d'utiliser des variables d'environnement à partir d'un fichier de configuration et j'étais coincé avec cette erreur.

TSError: impossible de compiler TypeScript.

Impossible de trouver le nom 'processus' - (2304)

J'ai finalement ajouté ceci à mon tsconfig.json:

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

C'était avec tsconfig.json et node_modules dans le même niveau de répertoire mais pour une raison quelconque, le compilateur ne le voyait tout simplement pas. Ce qui était étrange, c'est que cette erreur ne s'est produite que pour les variables process.env car le reste de mon code n'a eu aucun problème à compiler.

9
Kevin Collins

Ma solution complète pour sur OSX rassemble certains des éléments ci-dessus pour error TS2304: Cannot find name 'process'. Mon cas d'utilisation était un projet partiellement migré React de jsx/js vers tsx/ts.

  1. yarn add -D @types/node
  2. Mis à jour tsconfig.json inclure "typeRoots": ["./node_modules/@types"]
  3. comprendre import { } from 'node'; en haut du fichier avec l'erreur

Les 3 étapes ont été nécessaires pour moi lors de l'utilisation de TypeScript v2.7.1

5
Simeon

J'ai rencontré ce problème et j'ai dû ajouter ce qui suit au fichier contenant l'appel de processus:

import { } from 'node';

À quel moment il a reconnu le processus

3
Aleksandr Albert