Visual Studio Code: módulo compile typescript


Acabo de descargar el nuevo Código de Visual Studio y mi primera impresión es muy positiva. Para typescript, intellisense funciona muy bien.

Sin embargo, hay un problema extraño: VS Code no parece ser capaz de compilar módulos typescript.

Este código:

/// <reference path="../definitions/react.d.ts"/>

import React = require("react");

Compila perfectamente bien en el cmd, con

Tsc module módulo commonjs main.ts

Pero dentro de VS Code, la segunda línea se resalta en rojo y el editor queja:

No puede compilar módulos externos a menos que se proporcione el indicador" - module "

Por supuesto cualquier código typescript que haga uso de módulos tiene que ser compilado con esta bandera. Pero si el IDE es consciente del uso de módulos, ¿por qué no establece la bandera ? El código de Typescript sin módulos se compila al guardar, sin problemas.

Creo que me falta algún archivo de configuración del compilador. ¿Existe tal cosa ? ¿Dónde puedo encontrarlo? ?

ACTUALIZACIÓN

He añadido el tsconfig.archivo json:

{
    "compilerOptions": {
        "target": "ES5",
        "module": "commonjs",
        "sourceMap": true
    }
}

Esto elimina el error. Desafortunadamente el IDE ya no compila mi código. Al principio pensé en la configuración.json solo silenciaría el mensaje de error, pero hace más que eso. Intellisense ahora funciona en el archivo de ejemplo. Si escribo React se activa el autocompletado y aparentemente conoce React porque se muestran sugerencias significativas.

Ahora, ¿por qué VS Code no compila el archivo a js ? He intentado configurar el ejecutor de tareas para hacer ese trabajo, pero no parece funcionar:

{
    "version": "0.1.0",

    // The command is tsc.
    "command": "tsc",

    // Show the output window only if unrecognized errors occur. 
    "showOutput": "silent",

    // Under windows use tsc.exe. This ensures we don't need a shell.
    "windows": {
        "command": "tsc.exe"
    },

    // args is the HelloWorld program to compile.
    "args": ["--module commonjs","${file}"],

    // use the standard tsc problem matcher to find compile problems
    // in the output.
    "problemMatcher": "$tsc"
}

Si guardo el archivo, no pasa nada, incluso si corro explícitamente la tarea de compilación, no hay respuesta. El nombre de la tarea que edité es "tsc", también intenté ejecutarla. Sin efecto. Luego cambié los argumentos a "args": ["--module commonjs","main.ts"], Sin respuesta.

ACTUALIZACIÓN

La única forma en que el ejecutor de tareas parece funcionar es con estas dos configuraciones:

"args": ["${file}"], 
"isShellCommand": true, 

Aquí están los salidas:

  • "args": ["-p"],
  • "args": ["-p", "."],

Error TS5023: Opción de compilador desconocida 'p'.

  • "args": ["."],

Error TS6053: Archivo '.no se encontró.

Author: Daniel Santos, 2015-05-05

5 answers

También me enfrenté al mismo problema hoy. Seguí este enlace http://blogs.msdn.com/b/typescript/archive/2015/04/30/using-typescript-in-visual-studio-code.aspx Después de seguir todos los pasos de configuración, ejecuté este comando en la línea de comandos y comenzó a generar archivos JavaScript

npm install -g typescript

Necesitamos asegurarnos de que tenemos node y npm instalados y accesibles a través de la línea de comandos. La razón por la que encontré que no funcionaba porque en tasks.json especificamos las siguientes opciones

"command": "tsc"
"isShellCommand": true,

Entonces, visual studio code intenta ejecutar command tsc en la línea de comandos y no encuentra tsc. Por lo tanto, instalar typescript globalmente usando npm resolvió el problema.

 17
Author: khagesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-03 12:07:39

Tuve el mismo problema en otro proyecto sobre VS Code y descubrí que VS Code estaba usando una versión diferente de Typescript.

Aquí están las salidas:

  • "args": ["-p"],
  • "args": ["-p", "."],

Error TS5023: Opción de compilador desconocida 'p'.

  • "args": ["."],

Error TS6053: Archivo '.no se encontró.

Tuve la 1.5.3 desde npm y estaba utilizando el 1.0.3, esto porque yo había instalado en el sistema Typescript también en Microsoft SDKs y era accesible desde la RUTA .

La solución fue eliminar de global y usuario PATH this Typescript of Microsoft SDKs to access the newest one from npm that can manage -p args.

Intente ejecutar el comando tsc con solo el argumento -v para verificar si es la versión correcta.

 11
Author: Mirco Tracolli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-06 21:53:55

En cuanto a la compilación del código, las tareas.el archivo json debería tener este aspecto:

{
    "version": "0.1.0",
    "command": "tsc",    
    "showOutput": "silent",
    "windows": {
        "command": "tsc.exe"
    },
    "args": ["-p", "."],    
    "problemMatcher": "$tsc"
}

Si se está ejecutando bajo Windows y tiene tsc instalado como un módulo de nodo globalmente, cambie la sección de Windows a:

"windows": {
    "command": "tsc",
    "isShellCommand": true
}

Los -p . args le dicen al compilador tsc que busque un tsconfig.archivo json en la carpeta raíz y utilícelo para compilar su proyecto.

 8
Author: Dirk Bäumer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-23 04:07:52

Necesita crear un tsconfig.archivo json en la raíz de su proyecto.

Set "module": "commonjs"

Ejemplo básico:

{
    "compilerOptions": {
        "target": "ES5",
        "module": "commonjs",
        "sourceMap": true
    }
}
 3
Author: Ross Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-05 14:12:09

Tuve el mismo problema y encontré la solución aquí en stackoverflow, proporcionado por Steve Fenton: el código de visual studio se compila al guardar. Su propuesta es elegante, cumple con los estándares actuales de VS Code y funcionó de inmediato como se describe. Añadir esto a Archivo - > Preferencias - > Atajos de teclado como sobrescribir:

[
    {
        "key": "ctrl+s",          
        "command": "workbench.action.tasks.build" 
    }
]
 0
Author: lucobada,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:01:34