TS2300:重复标识符“路由器”

Posted

技术标签:

【中文标题】TS2300:重复标识符“路由器”【英文标题】:TS2300: Duplicate identifier 'Router' 【发布时间】:2019-11-02 10:47:59 【问题描述】:

将我的 Angular 项目从 7 升级到 8 后,出现以下错误:

node_modules/@angular/router/router.d.ts(1817,22) 中的错误:错误

这是我的 tsconfig.json

  
"compileOnSave": false,
"compilerOptions": 
  "baseUrl": "src",
  "downlevelIteration": true,
  "module": "esnext",
  "paths": 
    "core-js/es7/reflect": [
      "node_modules/core-js/proposals/reflect-metadata"
    ],
    "@app/*": [
      "app/*"
    ],
    "@app/core/*": [
      "app/core/*"
    ],
    "@app/shared/*": [
      "app/shared/*"
    ]
  ,
  "outDir": "./dist/out-tsc",
  "sourceMap": true,
  "declaration": false,
  "moduleResolution": "node",
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "target": "es2015",
  "typeRoots": [
    "node_modules/@types"
  ],
  "lib": [
    "es2017",
    "dom"
  ]


更新:

我删除了 node_modules 文件夹, 运行 npm cache clean --force ,从项目中删除 package-lock.json 并再次执行 npm install。 我仍然有这个错误

这是我的 package.json

  
"name": "start-ng",
"version": "2.2.0",
"license": "MIT",
"scripts": 
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build",
  "test": "ng test",
  "lint": "ng lint",
  "develop": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng  build --prod",
  "prod": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng  build --prod --configuration=production",
  "stage": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng  build --prod --configuration=staging",
  "e2e": "ng e2e",
  "compile:server": "webpack --config webpack.server.config.js --progress --colors",
  "serve:s-s-r": "node dist/server",
  "build:s-s-r": "npm run build:client-and-server-bundles && npm run compile:server",
  "build:client-and-server-bundles": "node --max_old_space_size=8192  node_modules/@angular/cli/bin/ng  build --prod --configuration=production && node --max_old_space_size=8192  node_modules/@angular/cli/bin/ng run careandcarers:server:production"
,
"private": true,
"dependencies": 
  "@agm/core": "^1.0.0-beta.6",
  "@angular/animations": "^8.0.1",
  "@angular/common": "^8.0.1",
  "@angular/compiler": "^8.0.1",
  "@angular/core": "^8.0.1",
  "@angular/forms": "^8.0.1",
  "@angular/platform-browser": "^8.0.1",
  "@angular/platform-browser-dynamic": "^8.0.1",
  "@angular/platform-server": "^8.0.1",
  "@angular/router": "^8.0.1",
  "@aspnet/signalr": "^1.1.4",
  "@nguniversal/express-engine": "^7.1.1",
  "@nguniversal/module-map-ngfactory-loader": "7.1.1",
  "@ngx-progressbar/core": "^5.3.2",
  "@ngx-progressbar/http": "^5.3.2",
  "@ngx-progressbar/router": "^5.3.2",
  "@progress/kendo-angular-buttons": "^4.4.2",
  "@progress/kendo-angular-dateinputs": "3.7.4",
  "@progress/kendo-angular-dropdowns": "^3.5.6",
  "@progress/kendo-angular-excel-export": "2.4.0",
  "@progress/kendo-angular-grid": "^3.14.4",
  "@progress/kendo-angular-inputs": "5.2.2",
  "@progress/kendo-angular-intl": "^1.7.1",
  "@progress/kendo-angular-l10n": "^1.4.1",
  "@progress/kendo-angular-popup": "^2.6.0",
  "@progress/kendo-angular-upload": "^4.3.2",
  "@progress/kendo-data-query": "^1.5.1",
  "@progress/kendo-drawing": "^1.5.12",
  "@progress/kendo-theme-default": "latest",
  "@swimlane/ngx-charts": "^12.0.1",
  "agm-direction": "^0.7.8",
  "angular-l10n": "^8.0.0",
  "angular2-navigate-with-data": "^1.1.11",
  "angular2-text-mask": "^9.0.0",
  "bootstrap": "^4.3.1",
  "classlist.js": "^1.1.20150312",
  "core-js": "^3.1.4",
  "domino": "^2.1.3",
  "express": "^4.17.1",
  "file-saver": "^2.0.2",
  "font-awesome": "^4.7.0",
  "intl": "1.2.5",
  "jquery": "3.4.1",
  "jwt-decode": "^2.2.0",
  "moment": "^2.24.0",
  "ng-block-ui": "^2.1.5",
  "ng-circle-progress": "^1.4.1",
  "ng2-ckeditor": "^1.2.3",
  "ngx-bar-rating": "^1.1.0",
  "ngx-bootstrap": "^4.3.0",
  "ngx-captcha": "^7.0.0",
  "ngx-chips": "^2.0.2",
  "ngx-infinite-scroll": "^7.2.0",
  "ngx-perfect-scrollbar": "8.0.0",
  "ngx-toastr": "^10.0.4",
  "popper.js": "1.15.0",
  "reflect-metadata": "^0.1.13",
  "rxjs": "^6.5.2",
  "rxjs-compat": "^6.5.2",
  "sweetalert2": "^8.12.1",
  "undefined": "^0.1.0",
  "web-animations-js": "github:angular/web-animations-js#release_pr208",
  "zone.js": "~0.9.1"
,
"devDependencies": 
  "@angular-devkit/build-angular": "~0.800.3",
  "@angular-devkit/build-ng-packagr": "~0.800.3",
  "@angular/cli": "^8.0.3",
  "@angular/compiler-cli": "^8.0.1",
  "@angular/language-service": "^8.0.1",
  "@types/googlemaps": "^3.36.5",
  "@types/jasmine": "^3.3.13",
  "@types/jasminewd2": "^2.0.6",
  "@types/node": "~12.0.8",
  "codelyzer": "^5.1.0",
  "jasmine-core": "~3.4.0",
  "jasmine-spec-reporter": "~4.2.1",
  "karma": "^4.1.0",
  "karma-chrome-launcher": "~2.2.0",
  "karma-coverage-istanbul-reporter": "^2.0.5",
  "karma-jasmine": "^2.0.1",
  "karma-jasmine-html-reporter": "^1.4.2",
  "ng-packagr": "^5.3.0",
  "node-sass": "^4.12.0",
  "protractor": "~5.4.2",
  "ts-loader": "^6.0.3",
  "ts-node": "~8.3.0",
  "tsickle": "^0.35.0",
  "tslib": "^1.10.0",
  "tslint": "~5.17.0",
  "typescript": "^3.4.2",
  "uglify-js": "^3.6.0",
  "webpack-cli": "^3.3.4"

【问题讨论】:

升级后,你是否删除了node_modules文件夹并使用'npm i'恢复了包? @Martino Bordin。是的,我做到了。但我仍然有那个错误 你可以删除你的node_modules,运行npm cache clean --force,从项目中删除你的package-lock.json,然后再次执行npm install @AbolfazlR,你的 package.json 是什么样的? @nircraft 在这里有正确的直觉。回想一下,@angular/* 依赖项应该被列为 peerDependencies 【参考方案1】:

使用 TypeScript 时,您很可能迟早要处理“重复标识符”错误。 但是这个错误究竟意味着什么?再次阅读错误文本。重复的标识符。您在代码中定义了两次相同的标识符(类、方法、属性)。

【讨论】:

【参考方案2】:

如果您删除包 angular2-navigate-with-data,一切正常。

删除此包后将数据发送到另一个页面更改代码:

表格

this.router.navigateByData( url: , data: data );

this.router.navigateByUrl(url,  state: data );

当你想获取数据时:

表格

let data = this.router.getNavigatedData();

this.activatedRoute.paramMap.pipe(map(() => window.history.state)).subscribe(data =>  let data = data );

【讨论】:

以上是关于TS2300:重复标识符“路由器”的主要内容,如果未能解决你的问题,请参考以下文章

错误 TS2300:重复标识符“RequestInfo”

错误 TS2300:node_modules/@types/core-js/index.d.ts 中的标识符“PropertyKey”重复

错误 TS2339:“主页”类型上不存在属性“路由器”

我想在新选项卡而不是同一选项卡中打开此路由器链接[重复]

路由器上不了网有黄色警告牌

angular2 - 使用路由器问题