Protractor: TS2440: Importdeklaration kollidiert mit lokaler Deklaration von 'PluginConfig'.

Erstellt am 6. Nov. 2019  ·  27Kommentare  ·  Quelle: angular/protractor

Hallo Herr!

Fehlerbericht
Ich erhalte folgenden Fehler:

FEHLER in [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440: Importdeklaration kollidiert mit lokaler Deklaration von 'PluginConfig'.

FEHLER in [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440: Importdeklaration kollidiert mit lokaler Deklaration von 'ProtractorPlugin'.

  • Knotenversion: 10.5.0
  • Winkelmesser-Version: ~5.1.2
  • Winkelversion: ^4.2.4
  • Browser: any
  • Betriebssystem und Version Windows 10
  • Ihre Winkelmesser-Konfigurationsdatei

const { SpecReporter } = require('jasmin-spec-reporter');

exports.config = {
allScriptsTimeout: 11000,
Spezifikationen: [
'./e2e/ */ .e2e-spec.ts'
],
Fähigkeiten: {
'browserName': 'chrom'
},
directConnect: wahr,
baseUrl: ' http://localhost :4200/',
Rahmen: 'Jasmin',
jasmineNodeOpts: {
showColors: wahr,
defaultTimeoutInterval: 30000,
drucken: Funktion () {}
},
onPrepare() {
require('ts-node').register({
Projekt: 'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};

  • Schritte zum Reproduzieren des Fehlers - npm run build fehlgeschlagen

Featureanfrage
Bitte hilf mir bei der Lösung

Hilfreichster Kommentar

Ist möglicherweise nicht die beste Lösung für alle, aber Sie sollten dies beheben können, indem Sie Folgendes in tsconfig.json hinzufügen:

"skipLibCheck": true

Alle 27 Kommentare

Ab heute habe ich das gleiche Problem (mit Protractor 5.4.2 und Angular 8)

Gleiches Problem hier mit Winkelmesser 5.4.2 und Angular 8

Ich bin heute beim Upgrade unserer Typescript-Version darauf gestoßen. Wir sind auf AngularJS und es tritt sowohl für Protractor 5.4.1 als auch für 5.4.2 auf. Bei Typescript 3.6.4 (3.6.x) erhalte ich den Fehler nicht, aber bei Typescript 3.7.2 (3.7.x). Ich glaube, es hängt mit dieser bahnbrechenden Änderung zusammen: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#local -and-imported-type-declarations-now-conflict

Bitte repariere; wir brauchen nullisches Zusammenwachsen! :)

Selbes Problem hier. Mein Projekt ist bei Protractor 5.4.2 und wir möchten auf TypeScript 3.7 migrieren.

Es wäre großartig, den Fix zurück zu portieren (es funktioniert sicherlich):
89fbf75d4103db2cd20fd0c1c4ca7efebc52c049
37bef24331c1012bfc2cc7d3fa259a00e69bd192
von Master bis 5.4.2

5.4.2 ist die neueste Version, die auf npmjs.com verfügbar ist.
6.0.0 enthält Breaking Changes, daher ist es für mein Projekt nicht gut.
( https://github.com/angular/protractor/blob/6.0.0/CHANGELOG.md )

CC: @sandersn @heathkit

Duplikat von #5325

Bearbeiten: Ich sollte klarstellen, dass ich im Typescript-Team arbeite, nicht im Angular-Team. Ich habe mit einigen Teammitgliedern gesprochen, die sagten, sie würden versuchen, eine neue 5.*-Version zu veröffentlichen, aber ich glaube, der Prozess ist nicht einfach.

Heute habe ich die Typoskriptversion von 3.7.x auf 3.6.x herabgestuft. Es funktioniert einwandfrei. Danke mattcasey

Danke für die Klarstellung @sandersn; das wäre meine nächste frage. Wir verlassen uns nicht auf die Flusskontrolle und ich habe versucht, auf 6.0.0 zu aktualisieren, aber selbst dieses veröffentlichte Paket scheint Ihre Lösung noch nicht zu haben. Es wäre toll, wenn sich jemand aus dem Team hier äußern könnte: Reden wir von ein paar Tagen, ein paar Monaten oder mehr?

Bearbeiten: Ich würde anbieten, zu helfen, aber es scheint, als ob der Überfall "nur" bei der Veröffentlichung einer neuen Version ist :)

Bearbeiten 2: Da der Rest unseres Systems auf TS 3.7 umgestiegen ist, bestand das kleinere von zwei Übeln für mich darin, die Typen von Winkelmesser vorerst zu überschreiben, indem ich eine benutzerdefinierte .d.ts-Datei in unserer tsconfig verlinke: https:// www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping

@mattcasey Könnten Sie etwas genauer beschreiben, wie Ihr aktueller Fix funktioniert? Einfach eine kopierte index.d.ts-Datei mit den richtigen Exportpfaden und dann die Pfadzuordnung verwenden, um den Winkelmesser der neuen Datei zuzuordnen?

Update-Typen/Knoten-Abhängigkeit
npm install -g @types/node@8

Stellen Sie sicher, dass Typen/Knoten sowohl in devDependencies als auch in Dependencies aufgeführt sind

"dependencies": { ... "@types/node": "^8.10.59", ... }, "devDependencies": { ... "@types/node": "^8.10.59", ... }

Falls dies bei einem Modul passiert, das Typescript 3.7.2 verwendet, können Sie die "as"-Anweisung verwenden.

import { module as otherModuleName } from "./module"

Oder Sie können das Modul als Standard exportieren, damit Sie einen anderen Variablennamen verwenden können

Heute habe ich die Typoskriptversion von 3.7.x auf 3.6.x herabgestuft. Es funktioniert einwandfrei. Danke mattcasey

Es hat "typescript": "~3.6" in die Datei package.json geschrieben und dann "npm install" auf dem Terminal ausgeführt und es hat für mich funktioniert. Vielen Dank!

Gleiches Problem und als ich auf 3.6.4 zurückgestuft habe, hat es funktioniert.

Das gleiche Problem hier, ich musste npm uninstall -g typescript eingeben, damit die lokale Version von tsc Priorität hat. Ich hätte mich stattdessen mit PATH anlegen können…

@woppa684 Meine Lösung besteht im Wesentlichen darin, meine eigenen Typen für Protractor zu erstellen und Typescript anzuweisen, den in node_modules zu ignorieren. Meine Datei protractor.d.ts (befindet sich in meinem Projekt unter test-e2e/protractor.d.ts ) sieht so aus:

// Note: This stub exists to override Protractor types which are incompatible with TS 3.7 as of 5.4.2 and 6.0.0
declare module 'protractor' {
    let browser: any;
    let element: any;
    let by: any;
    let ExpectedConditions: any;
    let until: any;
    let Key: any;
}

Und dann in tsconfig:

{
  ...
  "compilerOptions": {
    ...
    "paths": {
      "protractor": ["test-e2e/protractor.d.ts"]
    }
  }
}

Dadurch kann ich Typescript 3.7 verwenden, mit dem Nachteil, dass Winkelmesser-Methoden nicht mehr typsicher sind.

Eine alternative Lösung, die wir verwendet haben, besteht darin, einen modifizierten Build des Winkelmessers mit den Korrekturen in https://github.com/angular/protractor/pull/5326/ zu erstellen.

Wir verwenden es dann vorübergehend anstelle des Winkelmessers

// package.json
"protractor": "tomyam1/protractor-ts3.7-fix"

Ich habe dieses Problem auf Devops mit Angular. Das hat gerade angefangen zu passieren. Ich ging zurück und schnappte mir eine package.json und package-lock.json aus einer Zeit, von der ich wusste, dass sie funktionierte.
Ich habe Angular aktualisiert. Ich habe verschiedene Typoskript-Versionen ausprobiert. Es funktioniert auf meinem lokalen Computer, aber nicht auf Devops. Es ist nur der vs build-Teil, der fehlschlägt. Das npm/ng-Zeug läuft einwandfrei.
Auf meinem System funktioniert alles komplett.
https://developercommunity.visualstudio.com/content/problem/855096/npm-ng-suddenly-not-working-conflict-pluginconfig.html

Falls dies bei einem Modul passiert, das Typescript 3.7.2 verwendet, können Sie die "as"-Anweisung verwenden.

import { module as otherModuleName } from "./module"

Oder Sie können das Modul als Standard exportieren, damit Sie einen anderen Variablennamen verwenden können

@anicarrr , Könnten Sie bitte ein Beispiel für die zweite Antwort

Ist möglicherweise nicht die beste Lösung für alle, aber Sie sollten dies beheben können, indem Sie Folgendes in tsconfig.json hinzufügen:

"skipLibCheck": true

Falls dies bei einem Modul passiert, das Typescript 3.7.2 verwendet, können Sie die "as"-Anweisung verwenden.
import { module as otherModuleName } from "./module"
Oder Sie können das Modul als Standard exportieren, damit Sie einen anderen Variablennamen verwenden können

@anicarrr , Könnten Sie bitte ein Beispiel für die zweite Antwort

Ich meine den Export wie:

export default myModule

Wenn Sie es importieren, können Sie einfach einen beliebigen Namen verwenden, z.

import whateverName from myModule

Zur Info: In der Zwischenzeit sollte die Verwendung der tsc-Compileroption "skipLibCheck": true für die von diesem Problem betroffenen Personen eine ausreichende Problemumgehung sein.

Hallo Herr!

Fehlerbericht
Ich erhalte folgenden Fehler:

FEHLER in [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440: Importdeklaration kollidiert mit lokaler Deklaration von 'PluginConfig'.

FEHLER in [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440: Importdeklaration kollidiert mit lokaler Deklaration von 'ProtractorPlugin'.

  • Knotenversion: 10.5.0
  • Winkelmesser-Version: ~5.1.2
  • Winkelversion: ^4.2.4
  • Browser: any
  • Betriebssystem und Version Windows 10
  • Ihre Winkelmesser-Konfigurationsdatei

const { SpecReporter } = require('jasmin-spec-reporter');

exports.config = {
allScriptsTimeout: 11000,
Spezifikationen: [
'./e2e/ */ .e2e-spec.ts'
],
Fähigkeiten: {
'browserName': 'chrom'
},
directConnect: wahr,
baseUrl: ' http://localhost :4200/',
Rahmen: 'Jasmin',
jasmineNodeOpts: {
showColors: wahr,
defaultTimeoutInterval: 30000,
drucken: Funktion () {}
},
onPrepare() {
require('ts-node').register({
Projekt: 'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};

  • Schritte zum Reproduzieren des Fehlers - npm run build fehlgeschlagen

Featureanfrage
Bitte hilf mir bei der Lösung

Hallo SachinBN,

Sie müssen die im Projekt installierte Version von Typescript ändern. Verwenden Sie den folgenden Befehl im VS Code-Terminal, um die Version zu ändern (ohne Anführungszeichen).

"npm install -g [email protected] "

Wenn Sie fertig sind, überprüfen Sie bitte die Version des Typoskripts in Ihrem Projekt in VS Code, indem Sie den folgenden Befehl verwenden

"tsc-v"

Es sollte 3.6.2 zeigen. Bitte verwenden Sie dieselbe Version in der Datei package.json. Sobald die Version auf 3.6.2 geändert wurde, führen Sie "tsc" erneut aus, der Fehler sollte verschwunden sein.

Hoffe das hilft.

Grüße,

Ameya

Ich hatte dieses Problem in meiner eckigen App und kann es lösen, indem ich die Importanweisung für den Winkelmesser entferne, die automatisch von den Vorschlägen hinzugefügt wird.

Mögen:

import {element} von 'Winkelmesser'
import {versprechen} von 'Winkelmesser'

Entfernen Sie sie einfach, ich werde wie erwartet ausgeführt.
Meins hat funktioniert, ich hoffe, dein Code funktioniert auch.

Grüße,
Nishit Zinzuvadiya

npx tsc -v
Version 3.8.3

Neuester Knoten und NPM.

Meine Datei

import * as mysql from "mysql2";

const config =
    process.env.NODE_ENV == "prod"
        ? {
            connectionLimit: 10,
            host: "*********.rds.amazonaws.com",
            user: "admin",
            database: "p_" + process.env.PROJECT_ID,
            password: "*********",
            prefix: `p_${process.env.PROJECT_ID}_`
        }
        : {
            connectionLimit: 10,
            host: "host.docker.internal",
            user: "root",
            database: "i**_project",
            password: "root",
            prefix: ""
        };


export const db = mysql.createPool(config);
export const prefix = config.prefix;

Und ich habe den gleichen Fehler

npm run start

> [email protected] start /workspaces/icod-prt
> npx tsc && node build/index.js

typings/modules/mysql2/index.d.ts:677:1 - error TS2440: Import declaration conflicts with local declaration of 'Connection'.

677 import Connection = require('~mysql2~mysql/lib/Connection');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:679:1 - error TS2440: Import declaration conflicts with local declaration of 'PoolConnection'.

679 import PoolConnection = require('~mysql2~mysql/lib/PoolConnection');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:680:1 - error TS2440: Import declaration conflicts with local declaration of 'Pool'.

680 import Pool = require('~mysql2~mysql/lib/Pool');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:682:1 - error TS2440: Import declaration conflicts with local declaration of 'PoolCluster'.

682 import PoolCluster = require('~mysql2~mysql/lib/PoolCluster');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:684:1 - error TS2440: Import declaration conflicts with local declaration of 'Query'.

684 import Query = require('~mysql2~mysql/lib/protocol/sequences/Query');

Manchmal macht der TypeScript-Compiler Fehler einfach auf die rauchende Waffe eines anderen zurückzuführen.

Ich habe heute die genaue Fehlermeldung des OP erhalten, als ich an .spec.ts-Komponententestdateien gearbeitet habe. Da ich Protractor für Unit-Tests nicht benötigte, habe ich es vorübergehend mit npm uninstall protractor deinstalliert, was dann dazu führte, dass TypeScript den eigentlichen Fehler auslöste:

ERROR in src/app/.../...spec.ts:12:30 - error TS2307: Cannot find module 'protractor'.
12 import { EventEmitter } from 'protractor';

Die Ursache war, dass Visual Studio Code aus unerklärlichen Gründen diese automatische Importanweisung anstelle der normalen erstellt hatte, import { EventEmitter } from '@angular/core';

Habe das immer noch in 4.0.2.. hmmm

Ich hatte dieses Problem in meiner eckigen App und kann es lösen, indem ich die Importanweisung für den Winkelmesser entferne, die automatisch von den Vorschlägen hinzugefügt wird.

Mögen:

import {element} von 'Winkelmesser'
import {versprechen} von 'Winkelmesser'

Entfernen Sie sie einfach, ich werde wie erwartet ausgeführt.
Meins hat funktioniert, ich hoffe, dein Code funktioniert auch.

Grüße,
Nishit Zinzuvadiya

Für mich war es der automatische Import von VSCode, der EventEmitter von Protractor anstelle von @angular/core importierte. Das Beheben dieses Problems hat das Problem für mich behoben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen