找不到名称'console'.这可能是什么原因?

hel*_*SON 19 javascript node.js typescript

以下代码段显示了第4行的打字稿错误:

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

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

错误说:

[ts] Cannot find name 'console'.
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因?为什么找不到对象console

Dav*_*d R 41

您必须安装@types/node以获取节点类型,您可以通过执行以下命令来实现,

npm install @types/node --save-dev
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 还有什么我需要做的吗?它仍然抛出相同的警告? (2认同)
  • 您可能还需要在tsconfig.json中显式包含节点typedefs,如下所示:`“ types”:[“ node”]` (2认同)

tBl*_*abs 27

在tsconfig.json中的compilerOptions的lib部分中添加"dom".

例:

{
    "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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你们都是对的 如果是Node / terminal应用程序,则使用`npm install @ types / node`;如果是浏览器应用程序,则使用`“ lib”:[“ dom”]`。 (5认同)
  • 您可能还需要在 tsconfig.json 中显式包含节点 typedef,如下所示: `"types": ["node"]` (3认同)
  • 如果它是一个应该能够在浏览器*或* Node 中运行的通用模块,那么最好的方法是什么? (2认同)
  • 我在 tsconfig.json 的“lib”部分中有“dom”,但仍然遇到相同的错误。有任何想法吗?这之前工作得很好。 (2认同)

小智 15

你可以运行npm install @types/node -D,然后你需要添加types:[ 'node']到你的tsconfig.jsonalso.

package.json

"devDependencies": {
    "@types/node": "^15.0.3"
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json

{
  "compilerOptions": {
    "composite": true,
    "outDir": "./dist",
    "rootDir": ".",
    "declaration": true,
    "noImplicitAny": true,
    "esModuleInterop": true,
    "module": "commonjs",
    "target": "es6",
    "types": [
      "node"
    ],
    "lib": [
      "es6"
    ]
  },
  "exclude": [
    "node_modules",
    "dist"
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,只需命令“npm i @types/node -D”就足够了,不需要再做任何事情。 (2认同)

小智 9

只需在 tsconfig.json 文件中添加 ES6 和 DOM

  • `DOM` 无意中包含了 `console` 的定义,但你真正想要的是 `npm install @types/node --save-dev`。 (4认同)