Eureka JavaScript Client
raw JSON → 4.5.0 verified Fri May 01 auth: no javascript
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.
Common errors
error TypeError: Eureka is not a constructor ↓
cause Using default import or incorrect require pattern that imports the whole module object.
fix
Use const { Eureka } = require('eureka-js-client'); or import { Eureka } from 'eureka-js-client';
error Error: listen EADDRINUSE: address already in use :::8080 ↓
cause Port conflict when multiple instances run on same host without unique ports.
fix
Configure each instance with a different port in the instance configuration or bind to port 0 for dynamic assignment.
error Error: Failed to fetch registry: ECONNREFUSED ↓
cause Eureka server is not running or unreachable at configured host/port.
fix
Verify Eureka server is up and accessible; check eureka.host and eureka.port configuration.
Warnings
gotcha Constructor options overwrite YAML config but merge behavior is not documented; missing fields from options may fallback to YAML defaults, causing silent misconfiguration. ↓
fix Always explicitly set all required options in constructor if using YAML fallback; avoid relying on partial overrides.
breaking 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. ↓
fix Use destructured require: `const { Eureka } = require('eureka-js-client')`.
deprecated The `request` library used internally is deprecated and unmaintained since 2020, with known security vulnerabilities. ↓
fix Use requestMiddleware to patch auth/headers; consider forking or switching to a maintained client like `@netflix/eureka-js-client`.
gotcha EUREKA_ENV env var takes precedence over NODE_ENV but many users expect NODE_ENV to be the sole configuration driver. ↓
fix Set EUREKA_ENV explicitly to control environment config file selection, or ensure NODE_ENV is set if EUREKA_ENV is absent.
Install
npm install eureka-js-client yarn add eureka-js-client pnpm add eureka-js-client Imports
- Eureka wrong
const Eureka = require('eureka-js-client');correctconst { Eureka } = require('eureka-js-client'); - Eureka wrong
import Eureka from 'eureka-js-client';correctimport { Eureka } from 'eureka-js-client'; - Eureka
const Eureka = require('eureka-js-client').Eureka;
Quickstart
const { Eureka } = require('eureka-js-client');
const client = new Eureka({
instance: {
app: 'my-service',
hostName: 'localhost',
ipAddr: '127.0.0.1',
port: 8080,
vipAddress: 'my-service.vip',
dataCenterInfo: { name: 'MyOwn' },
},
eureka: {
host: '192.168.99.100',
port: 8761,
servicePath: '/eureka/apps/',
},
});
client.start((err) => {
if (err) {
console.error('Failed to start Eureka client:', err);
} else {
console.log('Eureka client started and registered');
const instances = client.getInstancesByAppId('other-service');
console.log('Instances:', instances);
setTimeout(() => client.stop(), 10000);
}
});