Protractor: TS2440: A declaração de importação está em conflito com a declaração local de 'PluginConfig'.

Criado em 6 nov. 2019  ·  27Comentários  ·  Fonte: angular/protractor

Olá senhor!

Relatório de erro
Estou recebendo o seguinte erro:

ERROR in [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440: A declaração de importação está em conflito com a declaração local de 'PluginConfig'.

ERROR in [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440: A declaração de importação está em conflito com a declaração local de 'ProtractorPlugin'.

  • Versão do nó: 10.5.0
  • Versão do transferidor: ~5.1.2
  • Versão angular: ^4.2.4
  • Navegador (es): any
  • Sistema operacional e versão Windows 10
  • Seu arquivo de configuração do transferidor

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

exportações.config = {
allScriptsTimeout: 11000,
especificações: [
'./e2e/ * / .e2e-spec.ts'
],
capacidades: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: ' http: // localhost : 4200 /',
estrutura: 'jasmim',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
imprimir: função () {}
},
onPrepare () {
require ('ts-node'). register ({
projeto: 'e2e / tsconfig.e2e.json'
});
jasmine.getEnv (). addReporter (novo SpecReporter ({spec: {displayStacktrace: true}}));
}
};

  • Etapas para reproduzir o bug - falha na compilação da execução do npm

Solicitação de recurso
Por favor me ajude a resolver

Comentários muito úteis

Pode não ser a melhor solução para todos, mas você deve ser capaz de corrigir isso adicionando o seguinte em tsconfig.json:

"skipLibCheck": true

Todos 27 comentários

A partir de hoje estou tendo o mesmo problema (com Transferidor 5.4.2 e Angular 8)

O mesmo problema aqui com Transferidor 5.4.2 e Angular 8

Eu me deparei com isso hoje, enquanto atualizava nossa versão do Typescript. Estamos no AngularJS e isso ocorre tanto para o Transferidor 5.4.1 quanto para o 5.4.2. Não recebo o erro em Typescript 3.6.4 (3.6.x), mas sim em Typescript 3.7.2 (3.7.x). Acredito que esteja relacionado a essa mudança significativa: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#local -and-import-type-declarations-now-conflito

Por favor conserte; precisamos de uma coalescência nula! :)

Mesmo problema aqui. Meu projeto está no Protractor 5.4.2 e gostaríamos de migrar para o TypeScript 3.7.

Seria ótimo fazer o backport da correção (com certeza funciona):
89fbf75d4103db2cd20fd0c1c4ca7efebc52c049
37bef24331c1012bfc2cc7d3fa259a00e69bd192
do mestre para 5.4.2

5.4.2 é a versão mais recente disponível em npmjs.com.
6.0.0 contém alterações importantes, por isso não é bom para o meu projeto.
(https://github.com/angular/protractor/blob/6.0.0/CHANGELOG.md)

CC: @sandersn @heathkit

Duplicado de # 5325

Edit: Devo esclarecer que trabalho na equipe Typescript, não na equipe Angular. Conversei com alguns membros da equipe que disseram que tentariam publicar uma nova versão 5. *, mas acredito que o processo não é simples.

Hoje eu fiz o downgrade da versão do typescript de 3.7.x para 3.6.x., está funcionando bem. Obrigado mattcasey

Obrigado por esclarecer @sandersn; essa seria a minha próxima pergunta. Não dependemos do controle de fluxo e tentei atualizar para 6.0.0, mas mesmo aquele pacote publicado não parece ter sua correção ainda. Seria ótimo se alguém da equipe comentasse aqui: estamos conversando há alguns dias, alguns meses ou mais?

Edit: Eu ofereceria ajuda, mas parece que o atraso é "apenas" no lançamento de uma nova versão :)

Edição 2: Como o resto do nosso sistema mudou para o TS 3.7, o menor dos dois males para mim foi substituir os tipos do transferidor por enquanto vinculando a um arquivo .d.ts personalizado em nosso tsconfig: https: // www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping

@mattcasey Você poderia descrever com um pouco mais de detalhes como funciona a sua correção atual? Apenas um arquivo index.d.ts copiado com os caminhos de exportação corretos e, em seguida, use o mapeamento de caminho para mapear o transferidor para o novo arquivo?

Tipos de atualização / dependência de nó
npm install -g @types/node@8

Certifique-se de que os tipos / nós estão listados em devDependencies e dependências

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

Caso isso aconteça com qualquer módulo usando o typescript 3.7.2, você pode usar a instrução "as".

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

Ou você pode exportar o módulo como padrão para que possa usar um nome de variável diferente

Hoje eu fiz o downgrade da versão do typescript de 3.7.x para 3.6.x., está funcionando bem. Obrigado mattcasey

Ele colocou "typescript": "~ 3.6" no arquivo package.json, em seguida, execute "npm install" no terminal e funcionou para mim. Obrigado!

Mesmo problema e quando fiz o downgrade para 3.6.4 funcionou.

Mesmo problema aqui, eu tive que npm uninstall -g typescript para que a versão local de tsc tivesse prioridade. Eu poderia ter mexido com PATH vez disso ...

@ woppa684 minha correção é essencialmente criar meus próprios tipos para o Protractor e dizer ao Typescript para ignorar o que está dentro de node_modules. Meu arquivo protractor.d.ts (localizado em meu projeto em test-e2e/protractor.d.ts ) tem a seguinte aparência:

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

E então em tsconfig:

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

Isso me permite usar o Typescript 3.7 com a desvantagem de que os métodos do transferidor não são mais seguros para tipos.

Uma solução alternativa que usamos é criar uma versão modificada do transferidor com as correções em https://github.com/angular/protractor/pull/5326/

Nós o usamos temporariamente em vez do transferidor

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

Estou tendo esse problema no devops com o Angular. Isso apenas começou a acontecer. Voltei e peguei um package.json e um package-lock.json de um momento que sei que funcionou.
Eu atualizei o Angular. Tentei várias versões datilografadas diferentes. Funciona no meu computador local, mas não no devops. É apenas a parte do vs build que está falhando. O material npm / ng funciona perfeitamente.
Tudo funciona perfeitamente no meu sistema.
https://developercommunity.visualstudio.com/content/problem/855096/npm-ng-suddenly-not-working-conflict-pluginconfig.html

Caso isso aconteça com qualquer módulo usando o typescript 3.7.2, você pode usar a instrução "as".

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

Ou você pode exportar o módulo como padrão para que possa usar um nome de variável diferente

@anicarrr , poderia dar um exemplo para a segunda resposta que você forneceu?

Pode não ser a melhor solução para todos, mas você deve ser capaz de corrigir isso adicionando o seguinte em tsconfig.json:

"skipLibCheck": true

Caso isso aconteça com qualquer módulo usando o typescript 3.7.2, você pode usar a instrução "as".
import { module as otherModuleName } from "./module"
Ou você pode exportar o módulo como padrão para que possa usar um nome de variável diferente

@anicarrr , poderia dar um exemplo para a segunda resposta que você forneceu?

Quero dizer exportar como:

export default myModule

então, ao importá-lo, você pode apenas usar o nome que quiser, como:

import whateverName from myModule

Isso foi corrigido em https://github.com/angular/protractor/pull/5326. Estamos trabalhando para lançar um patch.

Fyi: entretanto, usar a opção do compilador tsc "skipLibCheck": true deve ser uma solução alternativa suficiente para aqueles afetados por este problema.

Olá senhor!

Relatório de erro
Estou recebendo o seguinte erro:

ERROR in [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440: A declaração de importação está em conflito com a declaração local de 'PluginConfig'.

ERROR in [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440: A declaração de importação está em conflito com a declaração local de 'ProtractorPlugin'.

  • Versão do nó: 10.5.0
  • Versão do transferidor: ~5.1.2
  • Versão angular: ^4.2.4
  • Navegador (es): any
  • Sistema operacional e versão Windows 10
  • Seu arquivo de configuração do transferidor

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

exportações.config = {
allScriptsTimeout: 11000,
especificações: [
'./e2e/ * / .e2e-spec.ts'
],
capacidades: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: ' http: // localhost : 4200 /',
estrutura: 'jasmim',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
imprimir: função () {}
},
onPrepare () {
require ('ts-node'). register ({
projeto: 'e2e / tsconfig.e2e.json'
});
jasmine.getEnv (). addReporter (novo SpecReporter ({spec: {displayStacktrace: true}}));
}
};

  • Etapas para reproduzir o bug - falha na compilação da execução do npm

Solicitação de recurso
Por favor me ajude a resolver

Oi SachinBN,

Você precisa alterar a versão do Typescript instalada no projeto. Use o comando abaixo no terminal do VS Code para alterar a versão (sem aspas).

"npm install -g [email protected] "

Uma vez feito isso, verifique a versão do texto digitado em seu projeto no VS Code, usando o comando abaixo

"tsc -v"

Deve mostrar 3.6.2. Use a mesma versão no arquivo package.json. Assim que a versão for alterada para 3.6.2 execute "tsc" novamente, o erro deve ter desaparecido.

Espero que isto ajude.

Cumprimentos,

Ameya

Tive esse problema em meu aplicativo angular e posso resolvê-lo removendo a instrução de importação do transferidor, que é adicionada automaticamente pelas sugestões.

Gostar:

importar {elemento} de 'transferidor'
importar {promessa} de 'transferidor'

Apenas remova-os e executarei como esperado.
O meu funcionou, espero que seu código funcione também.

Cumprimentos,
Nishit Zinzuvadiya

npx tsc -v
Version 3.8.3

Nó e NPM mais recentes.

Meu arquivo

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;

E eu tenho o mesmo erro

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

Às vezes, o compilador do TypeScript atribui os erros à arma fumegante de outra pessoa.

Recebi a mensagem de erro exata do OP hoje enquanto trabalhava em arquivos de teste de unidade .spec.ts. Como eu não precisava do Protractor para testes de unidade, desinstalei-o temporariamente com npm uninstall protractor que fez com que o TypeScript gerasse o erro real:

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

A causa foi que o Visual Studio Code inexplicavelmente criou esta instrução de importação automática em vez da normal, import { EventEmitter } from '@angular/core';

ainda tenho isso no 4.0.2 .. hmmm

Tive esse problema em meu aplicativo angular e posso resolvê-lo removendo a instrução de importação do transferidor, que é adicionada automaticamente pelas sugestões.

Gostar:

importar {elemento} de 'transferidor'
importar {promessa} de 'transferidor'

Apenas remova-os e executarei como esperado.
O meu funcionou, espero que seu código funcione também.

Cumprimentos,
Nishit Zinzuvadiya

Para mim, foi a importação automática do VSCode, que importou EventEmitter de Protractor vez de @angular/core . Corrigir isso resolveu o problema para mim.

Esta página foi útil?
0 / 5 - 0 avaliações