Skip to main content
Glama

Superprecio MCP Server

by bunkerapps
NODE_COMPATIBILITY_FIX.md3.31 kB
# Fix: Compatibilidad con Node.js v12+ ## ✅ Problema Solucionado ### Error Original ``` SyntaxError: Unexpected token '.' at Loader.moduleStrategy (internal/modules/esm/translators.js:140:18) ``` ### Causa Claude Desktop estaba usando **Node.js v12** que **no soporta** el operador de optional chaining (`?.`) introducido en Node.js v14. ### Código Problemático ```typescript // ❌ No funciona en Node.js v12 const name = market?.name; const logo = response.markets[idx]?.logo; const focus = args?.focus || 'default'; ``` ### Solución Aplicada Reemplazamos todo el optional chaining con código compatible: ```typescript // ✅ Funciona en Node.js v12+ const name = market ? market.name : 'Unknown'; const logo = response.markets[idx] ? response.markets[idx].logo : ''; const focus = (args && args.focus) || 'default'; ``` ## 📝 Archivos Corregidos 1. `src/tools/searchProducts.ts` 2. `src/tools/searchByCode.ts` 3. `src/prompts/priceExpert.ts` 4. `src/client/superPrecioApi.ts` ## 🔄 Cómo Aplicar el Fix ### 1. El código ya está corregido Los archivos fuente ya no usan optional chaining. ### 2. Recompilar ```bash cd /Users/diegopacheco/Development/superprecio_mcp npm run build ``` ### 3. Reiniciar Claude Desktop ```bash # Cmd+Q para cerrar completamente # Abrir Claude Desktop de nuevo ``` ## ✅ Verificación Para verificar que el build está limpio: ```bash # No debería devolver nada grep "\?\." build/**/*.js ``` ## 📊 Compatibilidad ### Antes - Requería: Node.js v14+ - Error en: Node.js v12 ### Ahora - Compatible con: Node.js v12+ - Funciona en todas las versiones de Node ## 🎯 Por Qué Pasó Esto Claude Desktop puede usar diferentes versiones de Node.js dependiendo de: 1. La instalación del sistema 2. nvm (si está instalado) 3. La configuración de PATH Aunque tu sistema tenga Node.js v22, Claude Desktop puede estar usando una versión más antigua que encuentra primero en el PATH. ## 💡 Buenas Prácticas Para evitar esto en el futuro: ### 1. Configurar target en tsconfig.json Ya está configurado para ES2022, pero TypeScript no previene todas las features de JS moderno. ### 2. Usar plugin de ESLint Agregar reglas para detectar features no soportadas: ```json { "rules": { "no-unsafe-optional-chaining": "error" } } ``` ### 3. Especificar versión mínima de Node En `package.json`: ```json { "engines": { "node": ">=12.0.0" } } ``` Ya lo tenemos como `>=18.0.0`, pero el código ahora es compatible con v12+. ## 🔍 Features de JavaScript Modernas a Evitar Para compatibilidad con Node.js v12: | Feature | Versión Mínima | Alternativa Compatible | |---------|----------------|------------------------| | `?.` Optional chaining | v14 | `obj ? obj.prop : default` | | `??` Nullish coalescing | v14 | <code>val !== null && val !== undefined ? val : default</code> | | `#private` fields | v12 | `_private` convention | | Top-level await | v14.8 | Async IIFE | ## 📚 Referencias - [Node.js v12 Features](https://nodejs.org/docs/latest-v12.x/api/) - [Node.js v14 Features](https://nodejs.org/docs/latest-v14.x/api/) - [Optional Chaining Compatibility](https://caniuse.com/mdn-javascript_operators_optional_chaining) --- **Estado**: ✅ Corregido y verificado **Fecha**: 2025-10-18 **Versión**: 1.0.0

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bunkerapps/superprecio_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server