{"id":25555,"library":"eureka-js-client","title":"Eureka JavaScript Client","description":"A JavaScript client for Netflix OSS Eureka service registry (v4.5.0, actively maintained). Enables Node.js services to register, heartbeat, and discover instances from Eureka servers. Supports YAML configuration, environment-specific overrides (EUREKA_ENV, NODE_ENV), custom request middleware for auth, and delta registry updates. Key differentiator: full Eureka client implementation with instance management, unlike lighter discovery-only libraries.","status":"active","version":"4.5.0","language":"javascript","source_language":"en","source_url":"https://github.com/jquatier/eureka-js-client","tags":["javascript","eureka","service","registry","netflix"],"install":[{"cmd":"npm install eureka-js-client","lang":"bash","label":"npm"},{"cmd":"yarn add eureka-js-client","lang":"bash","label":"yarn"},{"cmd":"pnpm add eureka-js-client","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Client exports Eureka as a named export, not default. Misleading README shows both styles; use named import.","wrong":"const Eureka = require('eureka-js-client');","symbol":"Eureka","correct":"const { Eureka } = require('eureka-js-client');"},{"note":"ESM named import is correct. Default import works due to module interop but TypeScript may flag it.","wrong":"import Eureka from 'eureka-js-client';","symbol":"Eureka","correct":"import { Eureka } from 'eureka-js-client';"},{"note":"CommonJS require of named export. This is explicit and avoids confusion.","wrong":null,"symbol":"Eureka","correct":"const Eureka = require('eureka-js-client').Eureka;"}],"quickstart":{"code":"const { Eureka } = require('eureka-js-client');\n\nconst client = new Eureka({\n  instance: {\n    app: 'my-service',\n    hostName: 'localhost',\n    ipAddr: '127.0.0.1',\n    port: 8080,\n    vipAddress: 'my-service.vip',\n    dataCenterInfo: { name: 'MyOwn' },\n  },\n  eureka: {\n    host: '192.168.99.100',\n    port: 8761,\n    servicePath: '/eureka/apps/',\n  },\n});\n\nclient.start((err) => {\n  if (err) {\n    console.error('Failed to start Eureka client:', err);\n  } else {\n    console.log('Eureka client started and registered');\n    const instances = client.getInstancesByAppId('other-service');\n    console.log('Instances:', instances);\n    setTimeout(() => client.stop(), 10000);\n  }\n});","lang":"javascript","description":"Instantiate and start a Eureka client with minimal configuration, then fetch instances by app ID and stop after 10 seconds."},"warnings":[{"fix":"Always explicitly set all required options in constructor if using YAML fallback; avoid relying on partial overrides.","message":"Constructor options overwrite YAML config but merge behavior is not documented; missing fields from options may fallback to YAML defaults, causing silent misconfiguration.","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"Use destructured require: `const { Eureka } = require('eureka-js-client')`.","message":"In v4.0.0, default export changed to named export. Code using `const Eureka = require('eureka-js-client')` will get the whole module, not the constructor.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Use requestMiddleware to patch auth/headers; consider forking or switching to a maintained client like `@netflix/eureka-js-client`.","message":"The `request` library used internally is deprecated and unmaintained since 2020, with known security vulnerabilities.","severity":"deprecated","affected_versions":">=4.4.1"},{"fix":"Set EUREKA_ENV explicitly to control environment config file selection, or ensure NODE_ENV is set if EUREKA_ENV is absent.","message":"EUREKA_ENV env var takes precedence over NODE_ENV but many users expect NODE_ENV to be the sole configuration driver.","severity":"gotcha","affected_versions":">=4.5.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use const { Eureka } = require('eureka-js-client'); or import { Eureka } from 'eureka-js-client';","cause":"Using default import or incorrect require pattern that imports the whole module object.","error":"TypeError: Eureka is not a constructor"},{"fix":"Configure each instance with a different port in the instance configuration or bind to port 0 for dynamic assignment.","cause":"Port conflict when multiple instances run on same host without unique ports.","error":"Error: listen EADDRINUSE: address already in use :::8080"},{"fix":"Verify Eureka server is up and accessible; check eureka.host and eureka.port configuration.","cause":"Eureka server is not running or unreachable at configured host/port.","error":"Error: Failed to fetch registry: ECONNREFUSED"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}