我在网络项目中使用 typescript 。我用 awesome-typescript-loader
作为webpack
装载机。我在构建项目时遇到错误:
ERROR in [at-loader] ./node_modules/@types/node/index.d.ts:82:15
TS2451: Cannot redeclare block-scoped variable 'custom'.
ERROR in [at-loader] ./node_modules/@types/node/index.d.ts:85:15
TS2451: Cannot redeclare block-scoped variable 'custom'.
ERROR in [at-loader] ./node_modules/@types/node/ts3.2/util.d.ts:7:15
TS2451: Cannot redeclare block-scoped variable 'custom'.
ERROR in [at-loader] ./node_modules/@types/node/ts3.2/util.d.ts:10:15
TS2451: Cannot redeclare block-scoped variable 'custom'.
我只用 typescript
启动了一个全新的文件夹和 @types/typescript
安装后,我仍然可以看到 visual studio code
提示的相同错误.
以下版本:
"dependencies": {
"@types/node": "^11.13.6",
"typescript": "^3.4.4"
}
如上报错,我发现
在index.d.ts
:
declare module "util" {
namespace inspect {
const custom: symbol;
}
namespace promisify {
const custom: symbol;
}
namespace types {
function isBigInt64Array(value: any): boolean;
function isBigUint64Array(value: any): boolean;
}
}
在util.d.ts
:
declare module "util" {
namespace inspect {
const custom: unique symbol;
}
namespace promisify {
const custom: unique symbol;
}
namespace types {
function isBigInt64Array(value: any): value is BigInt64Array;
function isBigUint64Array(value: any): value is BigUint64Array;
}
}
我们可以看到custom
确实在 index.d.ts
中重新声明和 util.d.ts
.
所以我的问题是如何解决这个问题?这是@types/node 的错误吗?
最佳答案
我遇到了同样的问题。在 tsconfig 中删除对 Node 的引用为我解决了这个问题。
示例 tsconfig。
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "dist",
"sourceMap": true
},
"files": [
// "./node_modules/@types/node/index.d.ts",
"./node_modules/@types/express/index.d.ts"
],
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
],
"lib": [
"es2017"
]
}
关于node.js - TS2451 : Cannot redeclare block-scoped variable 'custom' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55790286/