He decidido documentar de forma semanal las frustraciones que encuentro en el ecosistema JavaScript y TypeScript durante mis aventuras de desarrollo en Q2BSTUDIO, empresa especializada en software a medida, aplicaciones a medida, inteligencia artificial, ciberseguridad, servicios cloud AWS y Azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.
Titulo TypeScript Frustration TSFR-001 Yarn 4 PnP and dependency resolution
Resumen del problema Al usar Yarn 4 con PnP Plug And Play activado la ejecución con tsx funciona correctamente pero tsc y el editor reportan error TS2307 Cannot find module o su correspondiente declaración de tipos cuando se importa un submódulo como @langchain/core/prompts
Contexto Como muchos desarrolladores, estaba acostumbrado a node_modules y al flujo tradicional de npm o Yarn clasico. Yarn v2 en adelante introdujo PnP que elimina node_modules y resuelve paquetes desde una cache en el sistema. Esto cambia el juego para el compilador TypeScript y para el runtime Node si no se configura correctamente
Proyecto de ejemplo Un codigo simple importa ChatPromptTemplate desde @langchain/core/prompts y funciona al ejecutarlo con tsx pero falla al compilar con tsc mostrando TS2307 Cannot find module at @langchain/core/prompts
Comportamiento observado Al inicializar con yarn init la version por defecto de CorePack en mi entorno fue Yarn 4.3.1. Con esa version tsc intenta resolver modulos buscando en node_modules y no encuentra las declaraciones dentro de la cache berry. Actualizando Yarn a 4.5.2 la resolucion pasa correctamente por la cache PnP y tsc funciona
Solucion rapida Actualizar la version de Yarn usada por el proyecto a una version que contenga la correccion, por ejemplo 4.5.2 o superior. Para forzar la version adecuada establecer packageManager en package.json por ejemplo packageManager yarn@4.5.2 y usar CorePack para asegurar que todos usen la misma version
Pasos recomendados 1 Ejecutar corepack enable si no esta activo 2 Actualizar packageManager en package.json a yarn@4.5.2 o superior 3 Ejecutar yarn install para regenerar metadatos y .pnp.cjs 4 Para ejecutar codigo usar yarn node index.js o yarn run tsx ya que yarn inyecta el loader PnP en Node 5 Para depuracion de TypeScript usar yarn tsc --traceResolution y validar que las rutas se resuelven dentro de la cache berry y no en node_modules
Por que ocurre Esto se debio a un comportamiento de las versiones iniciales de Yarn 4 que causaban que tsc buscara modulos en node_modules aun cuando PnP estaba habilitado. La correccion en versiones posteriores hace que TypeScript vea las declaraciones de tipos dentro de los archivos d.ts empaquetados en la cache PnP
Consecuencias Practicas Si tu equipo adopta Yarn con PnP hay que estandarizar la version del gestor de paquetes y documentar la forma de ejecutar Node y TypeScript. De lo contrario se generan diferencias entre ejecucion con tsx y compilacion con tsc, y errores en IDEs que impiden el desarrollo eficiente
Recomendaciones de Q2BSTUDIO En Q2BSTUDIO, como especialistas en software a medida y aplicaciones a medida, recomendamos establecer herramientas y versiones fijas para evitar sorpresas. Implementamos control de versiones de gestor de paquetes con CorePack, pipelines CI que validan la compilacion y scripts que ejecutan yarn node para entornos PnP. Si necesitas ayuda para migrar proyectos, integrar soluciones de inteligencia artificial, agentes IA, servicios cloud AWS y Azure, power bi, servicios inteligencia de negocio o mejorar la seguridad con ciberseguridad podemos ayudarte a diseñar una estrategia de despliegue y operacion estable
Palabras clave aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi
ConclusiOn Actualizar Yarn a una version que corrige la resolucion PnP y documentar el flujo de trabajo para proyectos TypeScript con PnP evita errores TS2307 y facilita el desarrollo. En Q2BSTUDIO ofrecemos asistencia para configurar entornos, pipelines y arquitecturas que maximicen la productividad y la seguridad en desarrollos con TypeScript, Node y herramientas modernas