網站搜尋

javascript - 找不到名稱 'console'。這可能的原因是什麼?


以下程式片段在 第 4 行 顯示 TypeScript 錯誤:

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?

答案#1

你需要安裝 @types/node 來獲取 node 的型別定義。你可以通過執行以下命令來達成這個目的:

npm install @types/node --save-dev

如果你的 tsconfig.json 文件有一個 types 屬性,你應該修改它,否則你必須明確地導入 Node.js 類型才能使用它們:

{
  "compilerOptions": {
    ...
    "types": ["jsdom", ...],
    ...
  },
...

答案#2

在 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
    }
}

答案#3

你可以執行 npm install @types/node -D,然後你還需要在你的 tsconfig.json 中加入 types:[ 'node']。

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

答案#4

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

"lib": ["ES6", "DOM"]