node.js - Dubbel Identifierare Fel Popper.js


Jag har inte kunnat åtgärda detta fel eller fastställa orsaken. Ingen kod har ändrats, så jag antar att det är resultatet av att ett NPM-paket har uppdaterats. Här är felloggen till konsolen. Detta är för en Angular2-applikation.

ERROR in [at-loader] ./node_modules/@types/popper.js/index.d.ts:6:19 
    TS2300: Duplicate identifier 'Popper'.

ERROR in [at-loader] ./node_modules/@types/popper.js/index.d.ts:89:15 
    TS2300: Duplicate identifier 'Popper'.

ERROR in [at-loader] ./node_modules/@types/popper.js/index.d.ts:104:3 
    TS2300: Duplicate identifier 'default'.

ERROR in [at-loader] ./node_modules/popper.js/index.d.ts:8:19 
    TS2300: Duplicate identifier 'Popper'.

ERROR in [at-loader] ./node_modules/popper.js/index.d.ts:113:15 
    TS2300: Duplicate identifier 'Popper'.

ERROR in [at-loader] ./node_modules/popper.js/index.d.ts:120:43 
    TS2694: Namespace 'Popper' has no exported member 'ReferenceObject'.

ERROR in [at-loader] ./node_modules/popper.js/index.d.ts:130:3 
    TS2300: Duplicate identifier 'default'.

Här är min tsconfig.json-fil:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es2015", "dom" ],
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "typeRoots": [
      "../node_modules/@types/"
    ]
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules/*",
    "**/*-aot.ts"
  ]
}

Här är min package.json-fil som du begärde. Jag tror att problemet är att ett av dessa paket uppgraderas till en instabil version, eftersom jag inte hade fått detta fel tidigare:

{
  "name": "truerec-verifier-landing-page",
  "version": "1.0.0",
  "description": "TrueRec verifier web.",
  "scripts": {
    "start": "webpack-dev-server --inline --progress --port 8080",
    "test": "karma start karma.webpack.conf.js",
    "build": "rm -rf dist/* && webpack --config config/webpack.prod.js --bail",
    "dev": "rm -rf dist/* && webpack --config config/webpack.dev.js --bail"
  },
  "keywords": [],
  "author": "",
  "license": "MIT",
  "dependencies": {
    "@angular/animations": "~4.1.1",
    "@angular/common": "~4.1.1",
    "@angular/compiler": "~4.1.1",
    "@angular/compiler-cli": "~4.1.1",
    "@angular/core": "~4.1.1",
    "@angular/forms": "~4.1.1",
    "@angular/http": "~4.1.1",
    "@angular/platform-browser": "~4.1.1",
    "@angular/platform-browser-dynamic": "~4.1.1",
    "@angular/platform-server": "~4.1.1",
    "@angular/router": "~4.1.1",
    "@angular/tsc-wrapped": "~4.1.1",
    "@angular/upgrade": "~4.1.1",
    "angular-in-memory-web-api": "~0.3.1",
    "angular2-recaptcha": "^0.4.1",
    "core-js": "^2.4.1",
    "jquery": "^3.2.1",
    "js-sha3": "^0.5.7",
    "ng2-pdf-viewer": "^1.1.0",
    "ng2-semantic-ui": "^0.8.4",
    "ng2-toastr": "^4.1.2",
    "ngx-cookie": "^1.0.0",
    "pdfjs-dist": "^1.8.430",
    "rxjs": "5.0.1",
    "zone.js": "0.8.12"
  },
  "devDependencies": {
    "@types/google.analytics": "0.0.33",
    "@types/jasmine": "2.5.36",
    "@types/node": "^6.0.45",
    "angular2-template-loader": "^0.6.0",
    "awesome-typescript-loader": "^3.0.4",
    "css-loader": "^0.26.1",
    "extract-text-webpack-plugin": "2.0.0-beta.5",
    "file-loader": "^0.9.0",
    "html-loader": "^0.4.3",
    "html-webpack-plugin": "^2.16.1",
    "jasmine": "~2.4.1",
    "jasmine-core": "~2.4.1",
    "karma": "^1.3.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "^2.0.1",
    "less": "^2.7.2",
    "less-loader": "^4.0.4",
    "lodash": "^4.16.2",
    "null-loader": "^0.1.1",
    "phantomjs-prebuilt": "2.1.13",
    "protractor": "~4.0.14",
    "raw-loader": "^0.5.1",
    "request": "^2.81.0",
    "resolve-url-loader": "^2.0.2",
    "rimraf": "^2.5.4",
    "style-loader": "^0.13.1",
    "to-string-loader": "^1.1.5",
    "tslint": "^3.15.1",
    "typescript": "~2.3.0",
    "webpack": "2.2.1",
    "webpack-dev-server": "2.4.1",
    "webpack-merge": "^3.0.0"
  },
  "repository": {}
}

Svar #1

Jag stötte på samma problem igår när jag klonade ett repo till en ny maskin och gjorde en NPM-installation för att få paketen - exakt samma fel. Mitt projekt använder också ng2-semantic-ui-paketet. Ng2-semantic-ui har ett beroende av både Popper.js och @types\popper (TypeScript-definitioner).

"dependencies": {
   "@angular/common": "^4.1.0",
   "@angular/core": "^4.1.0",
   "@angular/forms": "^4.1.0",
   "@types/popper.js": "^1.8.0",
   "element-closest": "^2.0.2",
   "popper.js": "^1.0.6",
    "rxjs": "^5.0.1"
},

Jag kunde jämföra paketen från min originalversion med den nya och jag märkte att popper.js nu har typescript-definitioner inkluderade (index.d.ts). Det verkar som att de infördes i 1.11.1 - jag har 1.10.8 på min fungerande version och 1.12.1 på min maskin med den 'trasiga' byggnationen (samma fel som ditt).

Källan till felet och dubbla identifierare är de dubbla typdefinitionerna för popper.js.

Jag kommer att öppna ett ärende på ng2-semantic-ui och se om vi kan ta bort beroendet av @types/popper.js eftersom det inte behövs med den senaste versionen av popper.js. Under tiden tog jag bort @types/popper.js och kunde få en bra build. Hoppas detta hjälper!

UPPDATERING: Det verkar som att detta problem har lösts i en snabbkorrigering för 3 veckor sedan i version 0.9.4 (problem 195) (https://github.com/edcarroll/ng2-semantic-ui/releases/tag/v0.9.4). Uppdatera din beroendeversion i din package.json och du borde vara redo att köra.

Relaterade artiklar