TS2451:无法重新声明块作用域变量“ custom”

Dav*_*vid 4 node.js typescript visual-studio-code

我在网络项目中使用打字稿。我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'.
Run Code Online (Sandbox Code Playgroud)

我用just启动typescript@types/typescript安装了一个完整的新文件夹,我仍然可以看到抱怨的相同错误visual studio code

以下版本:

  "dependencies": {
    "@types/node": "^11.13.6",
    "typescript": "^3.4.4"
  }
Run Code Online (Sandbox Code Playgroud)

如上面的错误所示,我发现

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

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

我们可以看到custom确实在index.d.ts和中重新声明了util.d.ts

所以我的问题是如何解决这个问题?这是@ types / node的错误吗?

小智 5

我面临着同样的问题。在tsconfig中删除对节点的引用对我来说解决了这个问题。

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

  • 另外,请务必查找并尝试删除其中任何一个: `/// <reference path="../node_modules/@types/node/index.d.ts" />` (2认同)