Actualicé una biblioteca Angular a Angular 9. Sin embargo, cuando intento usar esa biblioteca en otro proyecto Angular 9, aparece un error como este:
Faltan dependencias en el punto de entrada de destino "mycomponents/entity-selector":
- mycomponents/shared-services - mycomponents/spinner - mycomponents/text-inputPaquete.json
{ "$schema": "../../../node_modules/ng-packagr/package.schema.json", "name": "entity-selector", "version": "0.0.0", "ngPackage": { "lib": { "entryFile": "public_api.ts" }, "dest": "../../../dist/mycomponents/entity-selector" } }Este es un criterio de valoración secundario que utiliza otros componentes que también son criterios de valoración secundarios.
En el proyecto de la biblioteca, ¿necesito definir las dependencias en ng-packgr o en otro lugar? El módulo para el componente selector de entidades importa el módulo apropiado para los otros componentes. Este problema surgió desde Angular 9.
Gracias de antemano.
ngx-quill necesita que la quill de la biblioteca ya esté instalada, así que solo agregar esto resolvió el problema para mí
npm i quill@^1.3.7
Para Angular y Primeng 9
ERROR en el punto de entrada de destino "primeng" tiene dependencias faltantes:
- gráfico.js
Mi importación antes:
import {ToastModule} from "primeng";Solución:
import {ToastModule} from "primeng/toast";Tuve The target entry-point has missing dependencies al iniciar mi proyecto Angular con npm run start . Una solución simple que funcionó para mí fue clonar mi proyecto de GIT en una nueva carpeta en mi máquina local y luego ejecutar npm install , npm run start en un proyecto limpio. El problema se fue.
Creo que acabo de resolver la situación que describes. Tengo un paquete NPM llamado my-pkg que contiene varias "bibliotecas" (creadas con ng g library lib[1..N] , etc.). Da la casualidad de que mi libN depende de lib1 . Cuando trato de usar libN en una aplicación, aparece el error:
The target entry-point "my-pkg/libN" has missing dependencies: - lib1 Así es como importé originalmente lib1 a libN :
// libN.component.ts import { Lib1Comp } from 'lib1'; Esto funciona cuando construyo my-pkg . El problema es que 'lib1' no se resuelve en un paquete de nivel superior dentro de la carpeta node_modules de mi aplicación. Allí, debería conocerse como my-pkg/lib1 . Entonces, cambiemos la importación en libN.component.ts :
// libN.component.ts import { Lib1Comp } from 'my-pkg/lib1'; // note lib1 is now prefixed with my-pkg Por supuesto, no tenemos my-pkg instalado en los node_modules de my-pkg , por lo que no puede encontrar my-pkg/lib1 y ahora my-pkg no se compila.
Pero, ¿y si pudiéramos "instalar" my-pkg en su propia carpeta node_modules? Intentemos copiarlo allí a través de scripts NPM:
// package.json ... "scripts": { "copy:lib1": "npx copy .\\dist\\lib1\\**\\* .\\node_modules\\my-pkg\\lib1", "build:lib1": "ng build --prod lib1 && npm run copy:lib1", // repeat copy/build scripts as needed for libs[2..N] "build:pkg": "npm run build:lib1 && npm run build:libN" }, Ahora, ejecutamos npm run build:pkg . Construye lib1 y luego lo copia en nuestra carpeta local node_modules , ¡y ahora libN puede importar felizmente desde la ruta my-pkg/lib1 tanto en su biblioteca como en su aplicación!
ERROR in The target entry-point "primeng" has missing dependencies: - chart.js ERROR in The target entry-point "primeng" has missing dependencies: - quill ERROR in The target entry-point "primeng" has missing dependencies: - @fullcalendar/core npm install --save chart.js npm install --save quill npm install --save @fullcalendar/coreModifique su proyecto de componente para cambiar la ruta absoluta a una ruta relativa.
Tal como:
import {xxx} from 'src/xxx/xxx.module';para:
import {xxx} from '../../xxx/xxx.module'; Recibe ese error porque su proyecto de prueba no tiene esas dependencias instaladas en su directorio node_modules/ . Pero creo que hacer lo que sugiere @Renato y obligar a los usuarios de su biblioteca a instalar manualmente esas dependencias es un enfoque incorrecto.
Para que las dependencias que faltan se instalen automáticamente, es necesario agregar las dependencias de terceros de su biblioteca en dos lugares (dentro de la propia biblioteca):
package.json en la raíz de la biblioteca. Creo que ya lo tienes hecho. Poner todos los paquetes aquí garantiza que solo haya un único directorio node_modules/ en la raíz cuando ejecuta su proyecto para desarrollo.projects/entity-selector/package.json es el archivo que se usa como base para el archivo package.json que Angular genera cuando crea su biblioteca. Es necesario agregar las dependencias aquí para que los consumidores de su biblioteca sepan qué paquetes (bueno, su administrador de paquetes) necesitan descargar. Creo que esto es lo que te estás perdiendo actualmente.Después de agregar correctamente mis dependencias en ambos lugares, recibí errores de compilación que me decían que debería usar "peerDependencies" y no "dependencias" para mi biblioteca.
Eso no es aplicable a mi caso de uso, por lo que para evitarlo tuve que incluir explícitamente en la lista blanca mis dependencias. Hacerlo se ve un poco diferente dependiendo de cuál de los siguientes estés usando:
projects/entity-selector/package.jsonprojects/entity-selector/ng-package.json . En projects/entity-selector/package.json debería ser:
{ "$schema": "../../../node_modules/ng-packagr/package.schema.json", "ngPackage": { "lib": { "entryFile": "public_api.ts" }, "dest": "../../../dist/mycomponents/entity-selector", "whitelistedNonPeerDependencies": [ "mycomponents/shared-services", "mycomponents/spinner", "mycomponents/text-input" ] } } En projects/entity-selector/ng-package.json debería ser:
{ "$schema": "./node_modules/ng-packagr/package.schema.json", "lib": { "entryFile": "public_api.ts" }, "whitelistedNonPeerDependencies": [ "mycomponents/shared-services", "mycomponents/spinner", "mycomponents/text-input" ] } Finalmente, no olvide compilar su proyecto con ng build --prod o obtendrá un error sobre el nuevo compilador Ivy cuando intente publicar en NPM.
Tuve el mismo problema. Esto vino después de agregar un enlace simbólico, así que tuve que usar
npm unlink *@your/package*o simplemente a nivel mundial
npm unlinkEn el proyecto que importa su biblioteca, agregue lo siguiente a tsconfig.json . Esto garantiza que tsc pueda resolver las "dependencias faltantes" entre los submódulos de su biblioteca.
"compilerOptions": { "paths": { "mycomponents/*": [ "./node_modules/mycomponents/*" ], Con esto, no había necesidad de incluir dependencias no pares en la whitelistedNonPeerDependencies .