Erro fatal: não é possível instanciar a interface

12

Minha loja magento está lançando este erro:

Erro fatal: Não é possível instanciar a interface Magento \ Framework \ View \ Design \ Theme \ ResolverInterface em /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php na linha 73

Não sei por que começou a aparecer. Não fiz nenhuma nova instalação do módulo. A loja estava funcionando bem.

Verifiquei as permissões de arquivo e não vejo nenhum problema lá. Exclua também o / var / dir e, creio, todas as pastas / arquivos onde foram criados.

[EDIT] A preferência é definida vendor / magento / magento2-base / app / etc / di.xml

<preference for="Magento\Framework\View\Design\Theme\ResolverInterface" type="Magento\Theme\Model\Theme\Resolver" /> 
Filipe Sá
fonte
11
Espero que no ur módulo personalizado ou código a sua tentativa de usar Magento \ Framework \ Ver \ Projeto \ Tema \ ResolverInterface no construtor ou objeto gerente
Pradeep Kumar
@PradeepKumar Não. Não sou.
Filipe Sá
2
limpe seu cache e o conteúdo de var/generation.
Marius
@ Marius, como indicado na pergunta, eu já removi a pasta / var / * completamente.
Filipe Sá
Desculpa. Eu perdi essa linha.
Marius

Respostas:

23

Se você usar redis, execute:


redis-cli flushall



Se você também usar um ambiente como ansible ( lxc - server), precisará executar esse comando no contêiner. Além disso, fiz o seguinte:

  • Claro var/generation
  • Claro var/cache
  • Ative os módulos Magento: bin/magento module:enable --all
  • Compile DI bin/magento setup:di:compile
Gorr1995
fonte
11
havia tantas soluções enganosas lá fora, e isso funcionou imediatamente
3
Habilitar módulos Magento: bin / Magento módulo: permitem --all - Trabalhou para mim
Agnes
NÃO! Não é uma boa prática! módulo bin / magento: enable --all é como chmod -R 777 :(
Kārlis Millers
6

Eu tive esse erro e foi resolvido limpando a pasta var e depois executando setup:upgrade. Se isso não resolver, procure erros nos di.xmlarquivos

Claudiu Creanga
fonte
trabalhou para mim, especificamentevar/cache
Joshua Soileau
Obrigado redis-cli flushalltrabalhou para mim.
Sarjan Gautam 30/10/19
5

Execute o seguinte comando e verifique.

rm -rf generated

rm -rf var/*

Trabalhou para mim.

Kazim Noorani
fonte
2

Isso funcionou para mim:

 sudo apt-get install php-intl

 sudo service apache2 reload
abahet
fonte
1

No meu caso, tive que remover um módulo e simplesmente excluí os arquivos do módulo sem seguir os métodos adequados e, em seguida, esse erro estava na tela em todos os lugares. Depois de pesquisar muito, acabei substituindo os arquivos do módulo no mesmo diretório e excluí todas as pastas necessárias de var e executei os seguintes comandos.

php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

e tudo foi consertado. Segui as maneiras adequadas de remover o módulo. Espero que isso economize o tempo de alguém. :-)

MTM
fonte
1

Limpe o cache rm -rf var/cache

Se o redis estiver ativado, limpe o redis db usando a linha de comando:

$> redis-cli
$> flushall
Arvind07
fonte
0
php bin/magento c:c
php bin/magento setup:di:compile

irá corrigir seu problema

Dexture
fonte
0

Despejar arquivos de carregamento automático do compositor :

$ composer dumpautoload

Então:

bin/magento setup:upgrade
bin/magento setup:di:compile
user80131
fonte
0

Este erro é criado quando você tenta criar (novo) um objeto (classe) que é de fato e interface. Isso normalmente acontece quando você não substituiu a interface de uma classe no arquivo di.xml. Ou substituiu o no di.xml no diretório adminhtml e está tentando usar a interface no frontend.

interface MyInterface{
   pubic function getVariable(): int
}

class MyClass 
implements MyInterface{

   protected $variable;

   pubic function getVariable(){
      return $this->variable;
   }
}

$variable = new MyInterface();
Dallas Clarke
fonte