Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.4K
Visualizações
Actualización angular - Error: se debe llamar a inject() desde un contexto de inyección en injectInjectorOnly

Tengo un proyecto angular estructurado así:

Sitio1

  • Módulo 1
  • Módulo2
  • SharedModule <- NO en una biblioteca, solo un módulo

Sitio2

  • Módulo3
  • Módulo4
  • SharedModule <- módulo de llamadas en Main directamente

Sé que esto no es lo ideal, pero es así.

Los archivos package.json son exactamente iguales, aparte de los nombres de la aplicación.

El proyecto se inició en Angular 8 y siempre se ha actualizado bien, pero al pasar de 11 -> 12 tengo problemas:

Site1 se construye bien y funciona bien. Site2 se construye bien, pero los errores se ejecutan inmediatamente con

Error: inject() debe llamarse desde un contexto de inyección en injectInjectorOnly (core:4745) en Module.ɵɵinject (core:4755) en Object.RouterModule_Factory [as factory] (router:5999) en R3Injector.hydrate (core.js: 11438) en R3Injector.get (core.js:11257) en core.js:11295 en Set.forEach () en R3Injector._resolveInjectorDefTypes (core.js:11295) en el nuevo NgModuleRef$1 (core.js:25325) en NgModuleFactory$1 .create (core.js:25379)

Como Site1 funciona bien, supongo que debe ser algo al llamar a SharedModule.

Intenté agregar "preserveSymlinks": true, a projects.$name.architect.build.options, pero eso no funciona. No estoy usando npm link ya que el otro módulo no es una biblioteca (sé que debería haberse configurado de esa manera, pero no lo es).

Pasé al menos 2 días tratando de hacer que esto funcione (obviamente revisando publicaciones como esta y esta , pero las respuestas no parecen funcionar).

¿Alguien sabe cómo solucionar esto, o al menos cómo depurarlo, por favor?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Para el beneficio de los buscadores, después de no obtener una respuesta aquí, le pregunté esto a Angular.

Aquí están las respuestas proporcionadas.

Tiene dos árboles de espacio de trabajo distintos que se importan entre sí. Eso seguramente sufrirá versiones duplicadas de @angular/core que confunden el tiempo de ejecución, lo que resulta en el error de tiempo de ejecución bastante oscuro que está viendo. Puede solucionar esto utilizando asignaciones de rutas, como se explica en la guía de la biblioteca aquí (que también se aplica a su situación sin bibliotecas). No estoy seguro de por qué funcionó en versiones anteriores, siempre ha sido propenso a este tipo de problemas.

y

La causa es que los dos espacios de trabajo separados tienen sus propios paquetes @angular/core y ambos terminan en la aplicación incluida. El tiempo de ejecución de Angular mantiene su estado en las variables de módulo de nivel superior que son privadas para ese módulo, pero al tener dos ocurrencias de ese módulo (de ambas instancias de @angular/core), se encuentra con situaciones en las que el estado solo se inicializa correctamente en una instancia, no el otro En este caso, el contexto de inyección solo está disponible en el tiempo de ejecución "primario", pero las partes de la aplicación que se agruparon desde las partes de la biblioteca "secundarias" dependerán del estado del tiempo de ejecución "secundario".

Básicamente, la estructura es mala. En primer lugar, debería haberse hecho como un proyecto de biblioteca adecuado.

He hecho una demostración de cómo debería haberse hecho aquí .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda