web-dev-qa-db-fra.com

Impossible de trouver le nom 'console'. Quelle pourrait être la raison de cela?

L'extrait de code suivant montre une erreur TypeScript à LINE 4:

import {Message} from './class/message';

function sendPayload(payload : Object) : any{
   let message = new Message(payload);
   console.log(message);   // LINE 4 
}

L'erreur dit:

[ts] Cannot find name 'console'.

Quelle pourrait être la raison de cela? Pourquoi ne peut-il pas trouver l'objet console?

18
helloJSON

Vous devrez installer le @types/node pour obtenir les typages des nœuds, vous pouvez y parvenir en exécutant la commande ci-dessous,

npm install @types/node --save-dev

J'espère que cela t'aides!

36
David R

Ajoutez "dom" dans votre section lib dans compilerOptions dans tsconfig.json.

Exemple:

{
    "compilerOptions": {
        "rootDir": "src",
        "outDir": "bin",
        "module": "commonjs",
        "noImplicitAny": false,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true,
        "target": "es5",
        "lib": [
            "es6",
            "dom"    <------- Add this "dom" here
        ],
        "types": [
            "reflect-metadata"
        ],
        "moduleResolution": "node",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true
    }
}
25
tBlabs

vous pouvez également utiliser les mêmes valeurs que dans la réponse @tBlabs à partir de la ligne de commande, et vous n'avez pas besoin d'installer quoi que ce soit à côté de TypeScript:

tsc test.ts --lib esnext,dom

vous séparez les valeurs par une virgule et vous n'avez pas besoin d'esnext pour que console.log fonctionne.

1
jcubic

Il existe un moyen plus simple mais hacky de faire fonctionner console.log: Au lieu de console.log(message) write eval('console').log(message).

1
Yevhen Pavliuk