javascript - tipos - Leer argumentos desde la línea de comando-error TS2304: No se puede encontrar el nombre ''proceso''
pasar parametros javascript onclick (5)
Usando TypeScript versión 1.7.5.
Estoy escribiendo un programa nodeJS en el que quiero leer en argumentos de línea de comando pasados por el usuario (2 enteros). Todo funciona bien en JavaScript sin procesar, pero surge un problema con TypeScript.
Cuando
process.argv se usa en el archivo TypeScript, cuando se compila en JavaScript, el compilador comete errores porque no reconoce la variable "process".
error TS2304: Cannot find name ''process''
Intenté declarar un nuevo "proceso" de var en la parte superior del archivo, pero eso anula la variable nativa y ya no contiene los argumentos ...
Me gustaría conservar todo mi código en TypeScript, solo compilando JavaScript en tiempo de compilación. ¿Cuál es la mejor solución para este problema?
Actualización: septiembre de 2016
Debe asegurarse de que las definiciones de tipo para Node estén disponibles. La forma de hacerlo depende de la versión de TypeScript que esté utilizando.
TypeScript 1
Use typings para instalar las definiciones.
typings install --save --global env~node
Asegúrese de incluir typings/index.d.ts
en su archivo tsconfig.json
. O incluirlo en la matriz de "files"
:
"files": ["typings/index.d.ts"]
O asegúrate de que se omita de la matriz "exclude"
.
TypeScript 2
En TypeScript 2, las definiciones se pueden instalar a través de npm bajo el alcance @types
.
npm install --save-dev @types/node
Respuesta original: febrero de 2016
Debe asegurarse de que estén disponibles las definiciones de tipo apropiadas. Usa el typings paquetes de typings para esto. Instale las definiciones para el nodo de la siguiente manera:
typings install --save --ambient node
Ahora, hay algunas maneras en que puede asegurarse de que las definiciones estén disponibles para el compilador. El método preferido es configurar tu archivo tsconfig así:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
O alternativamente:
{
"files": [
"typings/main.d.ts"
]
}
Si no está utilizando un archivo tsconfig, puede usar una referencia en la parte superior de su archivo de entrada principal, como se muestra a continuación:
/// <reference path="path/to/typings/main.d.ts" />
Esta pregunta se encuentra en la parte superior de los resultados de Google cuando se busca el "proceso No se puede encontrar el nombre", así que agregaré mis 2 centavos a un tema que no está muy relacionado aquí.
Si necesita deshacerse del error al usar if(process.env.NODE_ENV === "production")
para quitar algún código en producción con el paquete web, simplemente agregue la siguiente declaración antes de la línea:
declare var process: {
env: {
NODE_ENV: string
}
};
Me encontré con este problema y tuve que agregar lo siguiente al archivo que contiene la llamada al proceso:
import { } from ''node'';
En ese punto, reconoció el proceso
Mi solución completa para OSX reúne algunas de las anteriores para el error TS2304: Cannot find name ''process''.
Mi caso de uso fue un proyecto React parcialmente migrado de jsx / js a tsx / ts.
-
yarn add -D @types/node
-
tsconfig.json
actualizado para incluir"typeRoots": ["./node_modules/@types"]
- incluye la
import { } from ''node'';
en la parte superior del archivo con el error
Los 3 pasos fueron necesarios para mí al usar Typescript v2.7.1
TypeScript 2 - Usuarios de Windows
Dado que esta pregunta se encuentra en la parte superior de Google para "ts2304 no se puede encontrar el nombre ''proceso''" Quiero agregar algo de ayuda para los usuarios de Windows. Estaba intentando usar variables ambientales de un archivo de configuración y me quedé con este error.
TSError: no se puede compilar TypeScript.
No se puede encontrar el nombre ''proceso''- (2304)
Finalmente agregué esto a mi tsconfig.json:
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types"
]
}
}
Esto fue con tsconfig.json y node_modules en el mismo nivel de directorio, pero por alguna razón el compilador simplemente no lo estaba viendo. Lo que es extraño es que este error solo ocurrió para las variables process.env ya que el resto de mi código no tuvo problemas para compilar.