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