Definitelytyped: [@ types / react-redux] 'hoist-non-react-statics' não exportou membro 'NonReactStatics'

Criado em 7 mar. 2019  ·  84Comentários  ·  Fonte: DefinitelyTyped/DefinitelyTyped

  • [x] Tentei usar o pacote @types/react-redux e tive problemas.
  • [x] Tentei usar a versão estável mais recente do tsc. https://www.npmjs.com/package/typescript
  • [x] Eu tenho uma pergunta que é inadequada para StackOverflow . (Por favor, faça quaisquer perguntas apropriadas lá).
  • [x] [Mencione] (https://github.com/blog/821-mention-somebody-they-re-notified) os autores (veja Definitions by: em index.d.ts ) para que eles possam responder.

@jamesreggio @JounQin

atualizar de @types/react-redux 7.0.1 para @types/react-redux 7.0.2 dá o seguinte erro:

'/node_modules/hoist-non-react-statics' has no exported member 'NonReactStatics'.

47 import { NonReactStatics } from 'hoist-non-react-statics';

parece que foi introduzido aqui: https://github.com/DefinitelyTyped/DefinitelyTyped/commit/8b1beff944f6c7bf913b6fcee31fb5f7129064a7

Comentários muito úteis

Posso estar errado, mas acho que o problema talvez seja mais simples,

import { NonReactStatics } from 'hoist-non-react-statics';

deveria estar

import NonReactStatics from 'hoist-non-react-statics';

fazer o downgrade para @ types / react-redux 7.0.1 é uma solução rápida até que isso seja corrigido.

Todos 84 comentários

Caramba. Eu introduzi uma dependência de @types/hoist-non-react-statics nessa mudança, mas não a adicionei como uma dependência. Este problema é que não tenho certeza de onde declará-lo como uma dependência, uma vez que os tipos dependem apenas dos tipos.

@JounQin , você pode me ajudar a entender como consertar isso. Precisamos adicionar ///<reference ou adicionar algo a package.json ?

Como solução temporária, você pode npm install --dev @types/hoist-non-react-statics para o seu projeto.

Posso estar errado, mas acho que o problema talvez seja mais simples,

import { NonReactStatics } from 'hoist-non-react-statics';

deveria estar

import NonReactStatics from 'hoist-non-react-statics';

fazer o downgrade para @ types / react-redux 7.0.1 é uma solução rápida até que isso seja corrigido.

Eu tenho esse problema hoje também. O downgrade para 7.0.1 ajudou

Mesmo aqui.

Caramba. Eu introduzi uma dependência de @types/hoist-non-react-statics nessa mudança, mas não a adicionei como uma dependência

DefinitelyTyped adicionou automaticamente @types/hoist-non-react-statics como uma dependência de @types/react-redux , mas (aparentemente) isso não foi suficiente para que suas digitações funcionassem.

Como solução temporária, você pode npm install --dev @types/hoist-non-react-statics para o seu projeto.

Não, isso não funcionará porque esta dependência já foi adicionada automaticamente pelo DefinitelyTyped, mas não é suficiente para o TS tratar suas digitações corretamente.

Eu acho que o problema é que o TS não está ciente da existência do módulo hoist-non-react-statics , já que hoist-react-statics próprio pacote não está presente em node_modules (é uma pena que o TS não pode derivar o módulo existente desde @types/hoist-non-react-statics pacote, embora possa haver uma razão válida para tal comportamento, por exemplo, compatibilidade). Esta hipótese é confirmada pelo fato de que a instalação manual de hoist-non-react-statics faz com que suas digitações funcionem corretamente .

Então, @jamesreggio , acho que você tem que adicionar hoist-non-react-statics pacote como uma dependência ao package.json de @types/react-redux para corrigir este problema.

@surgeboris atualizado para 7.0.3 e adicionado [email protected] e @types/[email protected] , corrigiu um problema

A correção realmente não está funcionando para mim. Talvez eu esteja fazendo algo errado. Usando fio 1.13

Ok pessoal, obrigado pela paciência.

Eu descobri uma solução e abri um PR: # 33919.

Aparentemente, se você usar a exportação de definição de tipo de estilo de nó (com export = ), a maneira correta de importar é com import [name] = require([package name]) . Não estou familiarizado com as nuances desses padrões de importação / exportação e estou apenas vagamente mais confiante de que entendi agora 😆

Esperançosamente, os mantenedores do DefinitielyTyped podem fazer a fusão e lançar o mais rápido possível. Desculpe novamente pela regressão.

Infelizmente, mesmo com 7.0.4 que foi lançado recentemente, isso não resolveu o problema para mim

Parece que a dependência explícita de @types/hoist-non-react-statics ainda está faltando.

na verdade, não - um novo npm i @types/react-redux instalado @types/hoist-non-react-statics . Não vejo nenhum problema?

Sim, a dependência está definitivamente listada em seu package.json :

  "dependencies": {
    "@types/hoist-non-react-statics": "*",
    "@types/react": "*",
    "redux": "^4.0.0"
  },

Se vocês ainda estão tendo problemas, você deve verificar se as versões corretas de tudo foi instalado.

(Especificamente, a dependência é listada como * , então você pode ter uma versão mais antiga de @types/hoist-non-react-statics que talvez esteja faltando o tipo que npm conta como satisfazendo a dependência?)

Portanto, o problema tem algumas nuances.

O pacote hoist-non-react-statics incluía suas próprias tipificações hiper-básicas de v2.2.0 até v3.0.0 , e se a versão de hoist-non-react-statics que resolve em seu projeto enraíza-se nisso intervalo, você encontrará este erro, uma vez que as tipificações locais do pacote têm precedência sobre @types/hoist-non-react-statics .

Existem duas soluções alternativas imediatas:

  1. Adicione hoist-non-react-statics@^3.3.0 ao seu projeto como uma dependência.
  2. Se estiver usando yarn, adicione uma modificação de resolução ao seu package.json como tal:
    "resolutions": { "hoist-non-react-statics": "^3.3.0" }

Nenhum deles é ótimo, porque a maioria dos desenvolvedores (com razão) não está ciente da existência de hoist-non-react-statics em primeiro lugar.

Não tenho certeza de qual seria a abordagem ideal aqui, mas suspeito que se pudéssemos listar uma especificação de versão específica para @types/hoist-non-react-statics dentro de package.json para @types/react-redux , nós poderia mitigar o impacto.

@weswigham - você sabe se é possível substituir a dependência * por uma dependência de @types/hoist-non-react-statics por >=3.3.0 ?

@weswigham - você sabe se é possível substituir a dependência

Se você adicionar explicitamente em package.json , pode funcionar? AFAIK, você não pode codificar versões para dependências implícitas ou baseadas em mapeamento de caminho, mas posso estar errado.

@sandersn sabe mais alguma coisa?

Acabei de abrir um PR que inclui uma versão específica de @types/hoist-non-react-statics em package.json . Esperançosamente isso funciona? Certamente não poderia machucar.

@weswigham , você se importa em revisar e aprovar?

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/33979

Não sei se essa é a solução correta. Eu adicionei uma dependência direta em hoist-non-react-statics@latest e corrigiu todos os problemas.

Ugh, @weswigham + @sandersn - não tenho certeza do que fazer. A compilação do Travis falhou porque adicionei uma especificação de versão específica para @types/hoist-non-react-statics . Veja o erro aqui .

É verdade que minha mudança para @types/react-redux _requer_ um mínimo de 3.3.0 de @types/hoist-non-react-statics , então eu sinto que devo ser capaz de expressar essa restrição. Você pode me ajudar a entender como fazer isso? (Devo fazer o que a mensagem de erro diz e adicioná-lo a dependenciesWhitelist.txt em types-publisher ? Parece um martelo muito grande.)

Não é um martelo muito grande - seu problema é exatamente o que a mensagem de log descreve (exceto que, mais uma vez, voltamos ao pacote subjacente e não aos tipos de remessa, eis a saga).

Legal, eu tenho um PR pronto para mesclar em types-publisher : https://github.com/Microsoft/types-publisher/pull/595

@weswigham - você pode pousar?

Foi publicado a partir de 3:06 PDT (cerca de 40 minutos antes deste comentário).

Certo pessoal, experimente @types/[email protected] e me avise se ainda estiver quebrado.

Continua o mesmo problema com @types/[email protected] . A única correção que funcionou para mim é exigir manualmente hoist-non-react-statics em meu projeto

Secundado, ainda quebrado em @ types / [email protected].

@jamesreggio @weswigham Não tenho certeza se você viu os comentários, mas estou

Sim, obrigado, eu tinha. Eu estava ensinando React esta tarde na Cisco quando isso foi parte da aula. Depois de uma verificação rápida e encontrei este tópico, eu os baixei para 7.0.1 e funcionou bem. Mas, eu tenho uma pequena estranheza. Se eu adicionar a estática não-reativa, funciona, conforme descrito acima. Se eu desinstalar o hoist-non-react-statics, ele continuará a funcionar. Então, talvez haja uma dependência real que é detectada lá, mas permanece mesmo se você remover o pacote. Se eu limpar o node_modules e o package-lock.json e reinstalar sem o guindaste, ele está quebrado novamente. Tenho que sair daqui agora, então não posso perder mais tempo nisso agora, tentando cavar mais fundo. Outra pessoa pode achar mais rápido de qualquer forma estar mais em sintonia com o pacote.

Eu vou cavar novamente amanhã, mas honestamente, eu preciso de ajuda
de um especialista. As complexidades do sistema de módulo TS me confundem. eu sinto
como se eu tivesse feito tudo corretamente aqui ...

Aqueles de vocês que estão tendo problemas, por favor, colem um resumo do seu
package-lock.json ou yarn.lock? Eu sinto que isso pode ser um problema relacionado
ao fato incomum de que a estática de não reagir incluiu suas próprias tipificações
por um curto período no passado.

Na quinta-feira, 21 de março de 2019 às 20:03, Joel Mussman [email protected] escreveu:

Sim, obrigado, eu tinha. Eu estava ensinando React esta tarde na Cisco quando este
mordeu a classe. Depois de uma verificação rápida e encontrei este tópico, os recebi de volta
até 7.0.1 e funcionou bem. Mas, eu tenho uma pequena estranheza. Se eu adicionar
hoist-non-react-statics funciona, conforme descrito acima. Se eu desinstalar
hoist-non-react-statics continua a funcionar. Então, talvez haja um verdadeiro
dependência que fica lá, mas permanece mesmo se você remover
esse pacote. Se eu limpar node_modules e package-lock.json e
reinstalar sem talha, está quebrado novamente. Eu tenho que sair daqui agora,
então não posso perder mais tempo nisso agora, tentando cavar mais fundo.
Alguém pode achar mais rápido de qualquer forma estar mais em sintonia com o
pacote.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33690#issuecomment-475477877 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AAyLva1P2ZGe86669tG7yu7fe1yMWWf-ks5vZEgHgaJpZM4bjI1Z
.

Olá James,

OK, eu entendo o que há de errado no meu projeto de classe. Não sei como consertar ainda. Mas vou divulgar o que sei e talvez alguém da Definitely Typed possa ajudá-lo.

react-router é instalado antes de react-redux pelo laboratório anterior. A versão atual do react-router (até 4 dias atrás) era 4.3.1 e depende de [email protected]. Portanto, de acordo com as regras, uma vez que ninguém mais dependia de hoist-non-react-statics, o pacote foi instalado no nível superior de node_modules. Agora, [email protected] está instalado. Depende de [email protected]. Mas, como 2.2.5 já está no nível superior, ele coloca 3.3.0 na pasta node_modules UNDER react-redux. Portanto, parece que a dependência em @ types / react -redux de @ types /

Outros problemas de pessoal descritos anteriormente podem ser muito semelhantes a este cenário.

Questão relacionada: como podemos saber qual versão de @ types / react-redux mapeia para qual versão de react-redux? Já que os números não se alinham, estou perdida aí.

Fiz um PR para corrigir este problema # 34090

Este problema não deveria ser reaberto, visto que o problema subjacente ainda não foi corrigido com a versão 7.0.5?
(sem adicionar @ types / hoist-non-react-statics + hoist-non-react-statics às devDependencies)

100% concordam que isso não deve ser fechado, ainda está quebrado, a menos que você adicione manualmente a devDependancies

Apresentei a correção adequada que as pessoas aqui parecem ignorar desde o início: # 34406

Portanto, agora que o PR foi mesclado, os tipos react-redux precisam atualizar a dependência da estática com guincho-não-reação?

Eu penso que sim. Mas acho que você pode remover a dependência (desinstalá-la) e adicioná-la novamente


De: Maurice [email protected]
Enviado: quinta-feira, 4 de abril de 2019 15:53:32
Para: DefinitelyTyped / DefinitelyTyped
Cc: wolfy1339; Manual
Assunto: Re: [DefinitelyTyped / DefinitelyTyped] [@ types / react-redux] 'hoist-non-react-statics' não exportou o membro 'NonReactStatics' (# 33690)

Portanto, agora que o PR foi mesclado, os tipos react-redux precisam atualizar a dependência da estática com guincho-não-reação?

-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33690#issuecomment-480039685 , ou desative o thread https://github.com/notifications/unsubscribe-auth/AEYfFbvvu7_1ZrU42jUxUxlv4JUx1g7_1ZrU42jUxUxlg1g7g1g7Mu8k4Zlg7g7MuZk4Zlg7Mc4ZkBu7MZ4ZkBuc7MZk4ZkB

Você quer dizer as tipificações react-redux? Vou tentar isso.

@ wolfy1339 https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34406 não pareceu resolver o problema para mim. Acho que é porque hoist-non-react-statics será instalado dentro de @types/hoist-non-react-statics ( node_modules/@types/hoist-non-react-statics/node_modules/hoist-non-react-statics ), então o TS ainda usa os tipos da minha versão raiz ( node_modules/hoist-non-react-statics ).

Nesse ponto, valeu a pena tentar. Alguém mais tem uma ideia?

@weswigham Você pode reabrir este problema?

Tive um problema semelhante - usar yarn em vez de npm para instalar dependências resolveu meu problema. Postando como uma nota lateral, porque talvez vocês possam tentar como uma solução alternativa.

@ alan-mroczek Usamos fio, então não, isso não ajuda. Deve haver algo mais em jogo aqui. (arquivo de bloqueio?)

Não sei se entendi o problema exato, mas a solução que funcionou para mim com o yarn foi adicionar um campo de resoluções ao package.json.

"resolutions": {
  "hoist-non-react-statics": ">=3.3.0"
}

Este problema ainda está ativo para "@types/react-redux": "7.0.8", e definir "resoluções" não é uma solução universal porque "resoluções" não funcionam em monorepo (espaços de trabalho de fios)

E não espero que seja a solução de qualquer maneira. Na minha opinião, o pacote @types depois de instalado deve "simplesmente funcionar"

A solução para todo esse calvário seria adicioná-lo como uma dependência de pares? Claro que não é à prova de falhas, mas é a única maneira de garantir que o texto digitado encontre a dependência necessária

Obtenha o Outlook para Android https://aka.ms/ghei36


De: Maurice [email protected]
Enviado: segunda-feira, 29 de abril de 2019 12:30:06
Para: DefinitelyTyped / DefinitelyTyped
Cc: wolfy1339; Menção
Assunto: Re: [DefinitelyTyped / DefinitelyTyped] [@ types / react-redux] 'hoist-non-react-statics' não exportou o membro 'NonReactStatics' (# 33690)

E não espero que seja a solução de qualquer maneira. Na minha opinião, o pacote @types https://github.com/types depois de instalado deve "simplesmente funcionar"

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33690#issuecomment-487649204 ou desative o thread https://github.com/notifications/unsubscribe-auth/ABDB6FL2OUVTTX754VHATMFS4FLPS4PA .

Tentei muitas coisas, fazer o downgrade para @ types / react-redux 7.0.1 ainda é a única correção que funciona no momento.

O mesmo para mim ! Mas eu espero que uma solução real venha um dia (manter essa dependência desatualizada é estranho!).

Acho que precisamos fazer a mesma coisa que # 34406 nas tipificações react-redux, e apenas adicionar uma dependência direta em hoist-non-react-statics , já que NPM e Yarn não vão necessariamente colocar a versão "correta" de hoist-non-react-statics no diretório acima de @types/react-redux (que fará com que o TS pegue o index.d.ts integrado da v2.5 se estiver lá)

Esta é uma solução realmente complicada (e poderia teoricamente ser mitigada se o TypeScript nos permitisse importar @types/hoist-non-react-statics/index.d.ts diretamente, mas não estou vendo nenhuma alternativa razoável (e basicamente qualquer outra pessoa que dependa de @types/hoist-non-react-statics vai precisar fazer o mesmo)

Acho que precisamos fazer a mesma coisa que # 34406 nas tipificações react-redux, e apenas adicionar uma dependência direta em hoist-non-react-statics , já que NPM e Yarn não vão necessariamente colocar a versão "correta" de hoist-non-react-statics no diretório acima de @types/react-redux (que fará com que o TS pegue o index.d.ts integrado da v2.5 se estiver lá)

Esta é uma solução realmente complicada (e poderia teoricamente ser mitigada se o TypeScript nos permitisse importar @types/hoist-non-react-statics/index.d.ts diretamente, mas não estou vendo nenhuma alternativa razoável (e basicamente qualquer outra pessoa que dependa de @types/hoist-non-react-statics vai precisar fazer o mesmo)

Que tal importar de '../hoist-non-react-statics'?
Pelo que vejo, o pacote '@ types / hoist-non-react-statics' é instalado automaticamente quando '@ types / react-redux' é instalado, então não deve haver risco de que ele falhe.
Anexei 2 arquivos para mostrar uma solução que funciona para mim.

hoist-non-react-statics_index.d.txt
react-redux_index.d.txt

Dada a maneira como o npm funciona, não podemos garantir que as digitações de hoist-non-react-statics estarão em um diretório irmão de react-redux . Dependendo de quais outras dependências o usuário instalou, pode ser um avô ou uma criança.

Isso ainda está quebrado para mim. Meu export default connect()(MyComponent) recebeu um tipo any . Voltar para 7.0.1 corrige esta parte ... Isso parece ser uma mudança em 7.0.2 .

Ainda acontece com 7.1.0 e rebaixar para 7.0.1 não é uma opção para nós porque precisamos de TS 3.5.2 (com TS 3.4.5 , 7.0.1 funciona) e isso gera o seguinte erro com 7.0.1 :

node_modules/@types/react-redux/index.d.ts:109:84 - error TS2344: Type 'GetProps<C>' does not satisfy the constraint 'Shared<TInjectedProps, GetProps<C>>'.
  Type 'unknown' is not assignable to type 'Shared<TInjectedProps, GetProps<C>>'.

Então, alguma .. solução alternativa? Não sou um especialista no assunto, então não consigo entender o que preciso fazer com isso.

@tsakalidiskostas

Bem, decidimos que enviaremos uma versão modificada dos tipos react-redux para nosso repo. (Depois de decidir não usar o pacote de patch . O que pode ser uma boa solução temporária se você não se importar com a solução alternativa do fio.)

Onde simplesmente mudamos a seguinte linha:

> = ComponentClass<JSX.LibraryManagedAttributes<C, P>> & hoistNonReactStatics.NonReactStatics<C> & {

para:

> = ComponentClass<JSX.LibraryManagedAttributes<C, P>> & {

Como não usamos estática, isso não nos prejudica, mas isso pode não ser uma solução aceitável para todos.

Legal! Eu fui com a sugestão de @alessioprestileo de mudar

import hoistNonReactStatics = require('hoist-non-react-statics');

para

import { NonReactStatics } from '../hoist-non-react-statics';

e mudando a chamada para

> = ComponentClass<JSX.LibraryManagedAttributes<C, P>> & NonReactStatics<C> & {

e funcionou para mim também, na verdade estava prestes a atualizar quando vi sua resposta: D

Então, você publicaria uma nova versão em npm com correções? :)

Podemos simplesmente fazer com que os mantenedores do hoist-non-react-statics verifiquem as digitações de volta em seu repositório?

Então ... isso está acontecendo ou devo prosseguir com uma mudança de garfo nisso?

Olá. Também atualizamos para a versão 7.1.1 mais recente de @types/react-redux com react-redux : 7.1.0 e estamos vendo este erro com npm. Estou confuso, pois todos os tíquetes referentes a isso estão fechados.
Um downgrade para 7.0.1 corrige este problema, mas causa um novo problema se usarmos a última versão do Typescript 3.5.x :

/.../node_modules/@types/react-redux/index.d.ts(109,84): error TS2344: Type 'GetProps<C>' does not satisfy the constraint 'Shared<TInjectedProps, GetProps<C>>'.
  Type 'unknown' is not assignable to type 'Shared<TInjectedProps, GetProps<C>>'.
    Type 'Matching<TInjectedProps, GetProps<C>>' is not assignable to type 'Shared<TInjectedProps, GetProps<C>>'.
      Type 'P extends keyof TInjectedProps ? TInjectedProps[P] extends GetProps<C>[P] ? GetProps<C>[P] : TInjectedProps[P] : GetProps<C>[P]' is not assignable to type 'TInjectedProps[P] extends GetProps<C>[P] ? GetProps<C>[P] : never'.

tornando-se uma solução alternativa meio triste.

A versão mais recente (ou seja, 7.1.1 ) de @types/react-redux não usa Shared<TInjectedProps, GetProps<C>> como restrição (precisamente por causa da correção no TS que apontou que a restrição estava incorreta) - você tem outra biblioteca que está forçando uma inclusão aninhada de uma versão mais antiga dos tipos react-redux , eu acho.

Então, eu tenho a solução alternativa. É denominado "pacote de patch".

Se você não usou o pacote de patch antes, é realmente muito fácil! Basta adicioná-lo à sua configuração, instalá-lo por npm e, em seguida, clicar em um comando de pacote de patch no módulo alterado que você corrigiu e está funcionando e pronto. Agora você tem alguns módulos que residem sob o pacote de patch que contém apenas os arquivos alterados do módulo que você estava corrigindo, nada muito sofisticado ou muito grande etc. O erro foi corrigido, a dependência não foi perdida, então quando / se eles corrigirem você pode facilmente excluir um ou dois arquivos e está tudo bem

Posso confirmar que a instalação de hoist-non-react-statics resolve este erro para react-redux 7.1.0 e @types/react-redux 7.1.1. Também estou usando o Typescript 3.4.3.

Não sei por que esse problema foi encerrado, no entanto. Existe uma solução mais razoável, sem ter que corrigir o pacote ou substituir a árvore de resoluções de módulo?

Estou tendo o mesmo problema que @jalMogo

Ainda estou vendo esse problema.

@jalMogo , tanto quanto eu entendo, este não é um problema com redux, mas com hoist-non-react-statics e é por isso que o problema está encerrado aqui. Existem várias soluções alternativas no segmento, mas seria melhor se alguém habilidoso o suficiente desse ao pessoal do guincho uma correção.

Não concordo que seja um problema com a estática sem reação do guincho. É um problema com a descrição de redux, na medida em que acaba olhando para a versão mais antiga e errada de hoist-non-react-statics se existir na árvore node_modules, o que acontece quando alguma outra coisa como o roteador está instalado . A dependência precisa ser descrita apropriadamente e a nova versão instalada apropriadamente na árvore node_modules.

Isso ainda é um problema.

+1

Ainda estou tendo esse problema e o lint diz que há um erro no código. Alguém ainda está trabalhando nisso ou é considerado encerrado? Tenho todas as versões mais recentes instaladas e ainda consigo:

O namespace '"/ home / myhome / Projects / node_modules / hoist-non-react-statics / index"' não tem membro exportado 'NonReactStatics'.ts (2694)

Este é definitivamente um problema da parte deles. Solução alternativa: @types/hoist-non-react-statics deve ser listado como uma dependência em SEU projeto para que funcione

Mas eu tenho isso e ainda consigo o problema:
"dependências": {
...
"@ types / hoist-non-react-statics": "^ 3.3.1",

está no meu package.json

Foi mal. Você precisa de hoist-non-react-statics


De: Robert Rehammar [email protected]
Enviado: domingo, 20 de outubro de 2019 1:50:51
Para: DefinitelyTyped / DefinitelyTyped [email protected]
Cc: wolfy1339 [email protected] ; Mencione a mençã[email protected]
Assunto: Re: [DefinitelyTyped / DefinitelyTyped] [@ types / react-redux] 'hoist-non-react-statics' não exportou o membro 'NonReactStatics' (# 33690)

Mas eu tenho isso e ainda consigo o problema:
"dependências": {
...
"@ types / hoist-non-react-statics": "^ 3.3.1",

está no meu package.json

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, vê-lo no GitHub https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33690?email_source=notifications&email_token=ABDB6FORFBHI575QMINWIQ3QPPWTXA5CNFSM4G4MRVM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBYC7IY#issuecomment-544223139 , ou unsubscribe https://github.com/notifications/unsubscribe- auth / ABDB6FLBLRAIO2PIIGMMJY3QPPWTXANCNFSM4G4MRVMQ .

Eu tenho "hoist-non-react-statics": "^3.3.0" em minhas dependências e "@types/hoist-non-react-statics": "^3.3.1" em minhas devDependencies e eu mesmo ainda tenho o problema. Eu confirmei que nenhuma outra biblioteca está puxando versões mais antigas desses também.

Eu também tentei sem instalar explicitamente "@types/hoist-non-react-statics" (porque pelo que entendi, o pacote principal já deveria ter tipificações incluídas), mas com o mesmo resultado.

Qualquer pessoa que enfrente este problema deve fornecer uma reprodução executável, caso contrário, não podemos oferecer qualquer ajuda.

Sinto muito, o projeto que estou experimentando não é de código aberto e não tenho tempo para criar um projeto separado para exibi-lo. O que eu percebi, entretanto, é que o projeto não tinha problemas até que eu habilitei allowJs: true em tsconfig.json . Sem essa configuração, tudo funcionou bem ainda. Espero que ajude.

adicionar o 'hoist-non-react-statics' parece ter corrigido isso aqui.

O repro é apenas instalar @ types / react-redux e então importar qualquer coisa no react-redux em um arquivo tsx.

Uma maneira de corrigir esse problema é adicionar "skipLibCheck": true em tsconfig.json. Não é a melhor solução, mas como alternativa, pode ser usada.

Acho que isso acontece porque o texto digitado resolve as coisas nesta ordem:

  1. package/package.json[types]
  2. @types/package
  3. package (tudo exceto o campo types )

Por que ele faz isso é um mistério para mim, mas está documentado aqui: https://www.typescriptlang.org/docs/handbook/module-resolution.html#how -typescript-resolves-modules

Por exemplo, se você tiver a seguinte estrutura de diretório:

node_modules/
  @types/
    hoist-non-react-statics/ (3.3.0)
    react-redux/
      node_modules/
        hoist-non-react-statics/ (3.3.0)

  hoist-non-react-statics/
    package.json (2.0, which has a types field!!!)
    index.d.ts

Então o texto digitado fará o seguinte:

  1. falha em obter tipos de node_modules/@types/react-redux/node_modules/hoist-non-react-statics porque a versão atual não inclui tipos
  2. ter sucesso em encontrar tipos de node_modules/hoist-non-react-statics (a versão antiga) porque seu package.json tem um campo types

portanto, como outros mencionaram, você pode corrigir o problema adicionando uma dependência em seu projeto no último hoist-non-react-statics , porque isso não tem um campo types em package.json então faz o passo 2 falhar.

Ironicamente, você também pode corrigir isso adicionando uma dependência em seu projeto em um hoist-non-react-statics mais antigo, por exemplo, 3.0.0. Isso funciona porque força a instalação da versão correta (3.3.0) em node_modules/@types/react-redux/node_modules/types/hoist-non-react-statics , onde foi resolvido anteriormente: confundido:

Portanto, tenho duas perguntas:

  1. Por que o texto digitado trata o campo types especialmente dessa maneira, e ele vem antes ou depois de @types pacotes dependendo se o campo types é usado ou não?
  2. Se hoist-non-react-statics uma vez tinham tipos integrados, por que eles foram renegados para cá? Isso não seria um problema se os tipos fossem integrados ao pacote. Não consigo ver como o yarn / NPM pode lidar adequadamente com pacotes separados para códigos e tipos, visto que eles não sabem como os dois estão conectados.

Este problema parece ter ressurgido com as versões mais recentes do pacote, ou seja:

[email protected]
@types/[email protected]

Consegui resolver isso incluindo manualmente os seguintes pacotes em meu package.json :

[email protected]
@types/[email protected]

Porque os pacotes de hoist-non-react-statics após minha npm install havia duplicatas desses pacotes em minha pasta node_modules . Executar npm dedupe esclareceu isso.

Espero que isso ajude todos os que vierem!

Eu também tive esse problema - louvado seja a solução de @DannyDelott !

Eu também tive esse problema - louvado seja a solução de @DannyDelott !

A solução mais rápida por enquanto sem poluir seu package.json com dependências de que você não precisa diretamente é remover @types/react-redux

npm remove @types/react-redux

Assim que verificarmos que o problema foi resolvido, podemos colocá-lo de volta

O problema ainda está acontecendo e a única maneira de corrigir isso é adicionar as dependências mencionadas ao seu projeto. No entanto, isso não é o ideal, então esperamos consertá-lo em breve!

Ainda percebendo esse problema.

Para qualquer pessoa disposta a continuar desenvolvendo enquanto uma correção estável estiver ativa, você pode usar o typedef abaixo:

// [your-src-folder]/types/hoist-non-react-statics.d.ts

declare module 'hoist-non-react-statics' {
  type NonReactStatics<T> = any;
  export { NonReactStatics }
}

Esta não é a solução ideal, mas pelo menos é útil para evitar erros de compilação com TS

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