错误 TS2300:重复标识符“RequestInfo”
Posted
技术标签:
【中文标题】错误 TS2300:重复标识符“RequestInfo”【英文标题】:error TS2300: Duplicate identifier 'RequestInfo' 【发布时间】:2018-11-09 14:15:45 【问题描述】:我在一个 ReactXP 项目中工作,我必须使用 React Native native modules。
所以我已将 react-native 类型作为开发依赖项包含在内。
我的项目现在无法编译,出现以下错误:
node_modules/@types/react-native/globals.d.ts(92,14): error TS2300: Duplicate identifier 'RequestInfo'.
node_modules/@types/react-native/index.d.ts(8751,11): error TS2451: Cannot redeclare block-scoped variable 'console'.
node_modules/@types/react-native/index.d.ts(8759,18): error TS2717: Subsequent property declarations must have the same type. Property 'geolocation' must be of type 'Geolocation', but here has type 'GeolocationStatic'.
node_modules/@types/react-native/index.d.ts(8762,11): error TS2451: Cannot redeclare block-scoped variable 'navigator'.
node_modules/typescript/lib/lib.dom.d.ts(15764,13): error TS2451: Cannot redeclare block-scoped variable'navigator'.
node_modules/typescript/lib/lib.dom.d.ts(15940,13): error TS2451: Cannot redeclare block-scoped variable'console'.
node_modules/typescript/lib/lib.dom.d.ts(15997,6): error TS2300: Duplicate identifier 'RequestInfo'.
18:17:44 - Compilation complete. Watching for file changes.
以下是我的 package.json 文件:
"dependencies":
"react": "^16.4.0",
"react-dom": "^16.3.1",
"react-native": "^0.55.4",
"react-native-windows": "^0.54.0",
"reactxp": "^1.2.1"
,
"devDependencies":
"@types/react-native": "^0.55.16",
"@types/webpack": "^4.1.3",
"@types/node": "9.6.7",
"@types/react-dom": "^16.0.5",
"awesome-typescript-loader": "^5.0.0",
"rnpm-plugin-windows": "^0.2.8",
"source-map-loader": "^0.2.3",
"ts-node": "^5.0.1",
"tslint": "^5.9.1",
"tslint-microsoft-contrib": "^5.0.3",
"typescript": "^2.8.1",
"webpack": "^4.5.0",
"webpack-cli": "^2.0.13"
和 tsconfig.json 文件
"exclude": [
"node_modules"
],
"compilerOptions":
"declaration": false,
"noResolve": false,
"jsx": "react",
"reactNamespace": "RX",
"module": "commonjs",
"target": "es5",
"experimentalDecorators": true,
"sourceMap": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"outDir": "./dist/",
"types": [
"lodash",
"react",
"react-dom"
],
"lib": [
"es6",
"dom"
],
,
"include": [
"./src/ts/**/*"
]
我不明白我做错了什么。
任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:在 tsconfig.json 中添加"skipLibCheck": true
参考:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16825
【讨论】:
这确实是正确的做法。我不得不退出 watch 模式并重新启动 tsc 才能看到变化。 虽然这只是掩盖了问题。真正的解决方案是对于 DefinitiveTyped 的人来说,让他们的包的类型相互兼容。【参考方案2】:我在 tsConfig.js 中添加了 "skipLibCheck": true
和 "allowSyntheticDefaultImports": true
。
【讨论】:
以上是关于错误 TS2300:重复标识符“RequestInfo”的主要内容,如果未能解决你的问题,请参考以下文章
错误 TS2300:node_modules/@types/core-js/index.d.ts 中的标识符“PropertyKey”重复
升级到 Typescript 2.9.1 后出现“TS2300: Duplicate identifier 'Account'”错误
TS2300: Duplicate identifier问题的解决