我在一个网络项目中使用打字稿。我使用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的错误吗?
答案 0 :(得分:1)
我面临着同样的问题。在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"
]
}```
答案 1 :(得分:0)
我的问题是我意外地包含了 node_modules / @ types 。通过注释将其固定,如下所示:
"include": ["src/**/*.ts","__tests__/**/*.ts"/*, "node_modules/@types"*/]
答案 2 :(得分:0)
我遇到了同样的问题,但是错误消息只是由于缓存错误而引起误导。我尝试了很多事情,但最终通过删除npm_modules,清除缓存和重新安装来解决了这个问题:
npm cache clean --force
npm install
答案 3 :(得分:0)
我在 protractor.conf.js 文件中两次添加了这段代码
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.e2e.json')
});