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

时间:2017-02-08 06:17:33

标签: 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 
}

错误说:

[ts] Cannot find name 'console'.

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

7 个答案:

答案 0 :(得分:28)

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

npm install @types/node

希望这有帮助!

答案 1 :(得分:22)

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

示例:

{
    "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
    }
}

答案 2 :(得分:2)

您可以运行 npm install @types/node -D,然后您还需要将 types:[ 'node'] 添加到您的 tsconfig.json 中。

package.json

"devDependencies": {
    "@types/node": "^15.0.3"
}

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"
  ]
}

答案 3 :(得分:1)

console.log工作的方式更简单但更简单:代替console.log(message)eval('console').log(message)

答案 4 :(得分:1)

您还可以使用与@tBlabs命令行中的答案相同的值,并且不需要在打字稿旁边安装任何东西:

tsc test.ts --lib esnext,dom

您可以用逗号分隔值,并且不需要esnext才能使console.log正常工作。

答案 5 :(得分:0)

我在节点终端上遇到了同样的问题。在$(".ItemQtd").each(function() { if($(this).val() && $(this).next(".ItemEmb").val()){ var number = parseInt( $(this).val() ); var package = parseInt( $(this).next(".ItemEmb").val() ); if (number % package === 0) { alert(`${number} is multiple of ${package}.`); } else { alert(`${number} is not multiple of ${package}.`); } } 的{​​{1}}字段中添加node解决了我的问题

答案 6 :(得分:0)

确认您没有从任何内容中导入console。喜欢:

import { console } from 'console'; // Confirm you haven't a statement like this.