Protractor: TS2440 : La déclaration d'importation est en conflit avec la déclaration locale de « PluginConfig ».

Créé le 6 nov. 2019  ·  27Commentaires  ·  Source: angular/protractor

Bonjour Monsieur!

Rapport d'erreur
J'obtiens l'erreur suivante ci-dessous:

ERREUR dans [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440 : La déclaration d'importation est en conflit avec la déclaration locale de « PluginConfig ».

ERREUR dans [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440 : La déclaration d'importation est en conflit avec la déclaration locale de « ProtractorPlugin ».

  • Version du nœud : 10.5.0
  • Version du rapporteur : ~5.1.2
  • Version angulaire : ^4.2.4
  • Navigateur(s) : any
  • Système d'exploitation et version Windows 10
  • Votre fichier de configuration de rapporteur

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

exportations.config = {
allScriptsTimeout : 11000,
spécifications : [
'./e2e/ */ .e2e-spec.ts'
],
capacités : {
'browserName' : 'chrome'
},
directConnect : vrai,
baseUrl : ' http://localhost :4200/',
cadre : 'jasmin',
jasmineNodeOpts : {
showColors : vrai,
defaultTimeoutInterval : 30000,
imprimer : fonction() {}
},
onPréparer() {
require('ts-node').register({
projet : 'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(nouveau SpecReporter({ spec : { displayStacktrace : true } }));
}
} ;

  • Étapes pour reproduire le bogue - npm run build échoue

Demande de fonctionnalité
Merci de m'aider à résoudre

Commentaire le plus utile

Ce n'est peut-être pas la meilleure solution pour tout le monde, mais vous devriez pouvoir résoudre ce problème en ajoutant ce qui suit dans tsconfig.json :

"skipLibCheck": true

Tous les 27 commentaires

À partir d'aujourd'hui, je reçois le même problème (avec Protractor 5.4.2 et Angular 8)

Même problème ici avec Protractor 5.4.2 et Angular 8

J'ai rencontré cela aujourd'hui lors de la mise à niveau de notre version Typescript. Nous sommes sur AngularJS et cela se produit à la fois pour Protractor 5.4.1 et 5.4.2. Je n'obtiens pas l'erreur sur Typescript 3.6.4 (3.6.x), mais je le fais avec Typescript 3.7.2 (3.7.x). Je pense que c'est lié à ce changement décisif :

S'il-vous-plaît, réparez; nous avons besoin d'une fusion nulle ! :)

Même problème ici. Mon projet est sur Protractor 5.4.2 et nous aimerions migrer vers TypeScript 3.7 .

Ce serait génial de rétroporter le correctif (ça marche sûrement):
89fbf75d4103db2cd20fd0c1c4ca7efebc52c049
37bef24331c1012bfc2cc7d3fa259a00e69bd192
du maître à 5.4.2

5.4.2 est la dernière version disponible sur npmjs.com .
6.0.0 contient des changements de rupture, ce n'est donc pas bon pour mon projet.
(https://github.com/angular/protractor/blob/6.0.0/CHANGELOG.md)

CC : @sandersn @heathkit

Duplicata du #5325

Edit : je dois préciser que je travaille dans l'équipe Typescript, pas dans l'équipe Angular. J'ai parlé à certains membres de l'équipe qui ont dit qu'ils essaieraient de publier une nouvelle version 5.*, mais je pense que le processus n'est pas simple.

Aujourd'hui, j'ai rétrogradé la version tapuscrit de 3.7.x à 3.6.x., cela fonctionne bien. Merci Mattcasey

Merci d'avoir clarifié @sandersn; ça allait être ma prochaine question. Nous ne comptons pas sur le contrôle de flux et j'ai essayé de mettre à jour vers 6.0.0, mais même ce package publié ne semble pas encore avoir votre correctif. Ce serait bien si quelqu'un de l'équipe pouvait commenter ici : parlons-nous de quelques jours, quelques mois ou plus ?

Edit : je proposerais d'aider mais il semble que le retard soit "juste" dans la sortie d'une nouvelle version :)

Edit 2: Puisque le reste de notre système est passé à TS 3.7, le moindre des deux maux pour moi était de remplacer les types du rapporteur pour l'instant en créant un lien vers un fichier .d.ts personnalisé dans notre tsconfig : https:// www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping

@mattcasey Pourriez-vous décrire un peu plus en détail le fonctionnement de votre correctif actuel ? Juste un fichier index.d.ts copié avec les chemins d'exportation corrects, puis utiliser le mappage de chemin pour mapper le rapporteur sur le nouveau fichier ?

Types de mise à jour/dépendance des nœuds
npm install -g @types/node@8

Assurez-vous que les types/nœuds sont répertoriés à la fois dans devDependencies et dans les dependencies

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

Dans le cas où cela se produirait avec n'importe quel module utilisant le typescript 3.7.2, vous pouvez utiliser l'instruction "as".

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

Ou vous pouvez exporter le module par défaut afin que vous puissiez utiliser un nom de variable différent

Aujourd'hui, j'ai rétrogradé la version tapuscrit de 3.7.x à 3.6.x., cela fonctionne bien. Merci Mattcasey

Il a mis "typescript": "~3.6" dans le fichier package.json, puis exécuté "npm install" sur le terminal et cela a fonctionné pour moi. Merci!

Même problème et lorsque je suis passé à la version 3.6.4, cela a fonctionné.

Même problème ici, j'ai dû npm uninstall -g typescript pour que la version locale de tsc soit prioritaire. J'aurais pu jouer avec PATH place…

@ woppa684 mon correctif consiste essentiellement à créer mes propres types pour Protractor et à dire à Typescript d'ignorer celui à l'intérieur de node_modules. Mon fichier protractor.d.ts (situé dans mon projet à test-e2e/protractor.d.ts ) ressemble à ceci :

// 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;
}

Et puis dans tsconfig :

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

Cela me permet d'utiliser Typescript 3.7 avec l'inconvénient que les méthodes de rapporteur ne sont plus sécurisées.

Une solution alternative que nous avons utilisée consiste à créer une version modifiée du rapporteur avec les correctifs dans https://github.com/angular/protractor/pull/5326/

Nous l'utilisons temporairement à la place du rapporteur

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

J'ai ce problème sur devops avec Angular. Cela vient de commencer. Je suis retourné et j'ai récupéré un package.json et un package-lock.json à un moment où je savais que cela fonctionnait.
J'ai amélioré Angular. J'ai essayé plusieurs versions dactylographiées différentes. Cela fonctionne sur mon ordinateur local, mais pas sur devops. C'est seulement la partie vs build qui échoue. Les trucs npm/ng fonctionnent très bien.
Tout fonctionne complètement sur mon système.
https://developercommunity.visualstudio.com/content/problem/855096/npm-ng-suddenly-not-working-conflict-pluginconfig.html

Dans le cas où cela se produirait avec n'importe quel module utilisant le typescript 3.7.2, vous pouvez utiliser l'instruction "as".

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

Ou vous pouvez exporter le module par défaut afin que vous puissiez utiliser un nom de variable différent

@anicarrr , pourriez-vous s'il vous plaît fournir un exemple pour la deuxième réponse que vous avez fournie?

Ce n'est peut-être pas la meilleure solution pour tout le monde, mais vous devriez pouvoir résoudre ce problème en ajoutant ce qui suit dans tsconfig.json :

"skipLibCheck": true

Dans le cas où cela se produirait avec n'importe quel module utilisant le typescript 3.7.2, vous pouvez utiliser l'instruction "as".
import { module as otherModuleName } from "./module"
Ou vous pouvez exporter le module par défaut afin que vous puissiez utiliser un nom de variable différent

@anicarrr , pourriez-vous s'il vous plaît fournir un exemple pour la deuxième réponse que vous avez fournie?

Je veux dire exporter comme :

export default myModule

Ainsi, lorsque vous l'importez, vous pouvez simplement utiliser le nom que vous voulez, comme :

import whateverName from myModule

Cela a été corrigé dans https://github.com/angular/protractor/pull/5326. Nous travaillons à la sortie d'un correctif.

Pour info : en attendant, l'utilisation de l'option de compilation tsc "skipLibCheck": true devrait être une solution de contournement suffisante pour les personnes concernées par ce problème.

Bonjour Monsieur!

Rapport d'erreur
J'obtiens l'erreur suivante ci-dessous:

ERREUR dans [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440 : La déclaration d'importation est en conflit avec la déclaration locale de « PluginConfig ».

ERREUR dans [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440 : La déclaration d'importation est en conflit avec la déclaration locale de « ProtractorPlugin ».

  • Version du nœud : 10.5.0
  • Version du rapporteur : ~5.1.2
  • Version angulaire : ^4.2.4
  • Navigateur(s) : any
  • Système d'exploitation et version Windows 10
  • Votre fichier de configuration de rapporteur

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

exportations.config = {
allScriptsTimeout : 11000,
spécifications : [
'./e2e/ */ .e2e-spec.ts'
],
capacités : {
'browserName' : 'chrome'
},
directConnect : vrai,
baseUrl : ' http://localhost :4200/',
cadre : 'jasmin',
jasmineNodeOpts : {
showColors : vrai,
defaultTimeoutInterval : 30000,
imprimer : fonction() {}
},
onPréparer() {
require('ts-node').register({
projet : 'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(nouveau SpecReporter({ spec : { displayStacktrace : true } }));
}
} ;

  • Étapes pour reproduire le bogue - npm run build échoue

Demande de fonctionnalité
Merci de m'aider à résoudre

Salut SachinBN,

Vous devez changer la version de Typescript installée dans le projet. Utilisez la commande ci-dessous dans le terminal VS Code pour changer de version (sans les guillemets).

" npm install -g [email protected] "

Une fois cela fait, veuillez vérifier la version du script dactylographié dans votre projet sur VS Code, en utilisant la commande ci-dessous

"tsc -v"

Il devrait afficher 3.6.2. Veuillez utiliser la même version dans le fichier package.json. Une fois la version modifiée en 3.6.2, exécutez à nouveau "tsc", l'erreur devrait disparaître.

J'espère que cela t'aides.

Salutations,

Ameya

J'ai eu ce problème dans mon application angulaire et je peux le résoudre en supprimant la déclaration d'importation du rapporteur qui est automatiquement ajoutée par les suggestions.

Comme:

importer { élément } de 'rapporteur'
importer { promesse } de 'rapporteur'

Supprimez-les simplement, je fonctionnerai comme prévu.
Le mien a fonctionné, j'espère que votre code fonctionnera aussi.

Salutations,
Nishit Zinzuvadiya

npx tsc -v
Version 3.8.3

Dernier nœud et NPM.

Mon fichier

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;

Et j'ai la même erreur

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');

Parfois, le compilateur TypeScript attribue simplement les erreurs à l'arme fumante de quelqu'un d'autre.

J'ai reçu le message d'erreur exact de l'OP aujourd'hui en travaillant sur les fichiers de test unitaire .spec.ts. Comme je n'avais pas besoin de Protractor pour les tests unitaires, je l'ai temporairement désinstallé avec npm uninstall protractor ce qui a ensuite provoqué l'erreur réelle de TypeScript :

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

La cause était que Visual Studio Code avait inexplicablement créé cette instruction d'importation automatique au lieu de la normale, import { EventEmitter } from '@angular/core';

j'ai toujours ça dans la 4.0.2 .. hmmm

J'ai eu ce problème dans mon application angulaire et je peux le résoudre en supprimant la déclaration d'importation du rapporteur qui est automatiquement ajoutée par les suggestions.

Comme:

importer { élément } de 'rapporteur'
importer { promesse } de 'rapporteur'

Supprimez-les simplement, je fonctionnerai comme prévu.
Le mien a fonctionné, j'espère que votre code fonctionnera aussi.

Salutations,
Nishit Zinzuvadiya

Pour moi, c'était l'importation automatique de VSCode, qui importait EventEmitter de Protractor au lieu de @angular/core . La résolution de ce problème a résolu le problème pour moi.

Cette page vous a été utile?
0 / 5 - 0 notes