Unable to create http server using node v24 (currently RC)

Author: abhilash-sivanCreated Apr 22, 2025Updated Jan 24, 2026
  • Used appropriate template for the issue type
  • Searched both open and closed issues for duplicates of this issue
  • Title adequately and concisely reflects the feature or the bug

Restify Version: 11.1.0 (latest) Node.js Version: 24 (latest)

Expected behaviour

A simple HTTP server implementation is expected to function correctly in the most recent Node.js release.

Actual behaviour

The server fails to start due to a breaking change introduced in Node.js version 24.

In this release, the http_parser process binding—deprecated for the past four years—has been removed. This binding is a transitive dependency of the restify package, which results in compatibility issues.

restify -> spdy -> http-deceiver

Repro case

A simple application running on Node.js v24 should suffice. A sample code snippet is provided below:

const restify = require('restify');

const port = 3000;
const logPrefix = `Restify App:\t`;

const server = restify.createServer({
  name: 'myrestifyapp',
  version: '1.0.0',
});

server.get('/', (req, res, next) => {
  res.send('success');
  next();
});

server.get('/test', function (req, res, next) {
  log('Received /test request');
});

server.listen(port, function () {
  log('%s listening at %s', server.name, server.url);
});

function log() {
  const args = Array.prototype.slice.call(arguments);
  args[0] = logPrefix + args[0];
  console.log.apply(console, args);
}

Cause

See the change in node js library that caused this issue: https://github.com/nodejs/node/pull/57149

Are you willing and able to fix this?

I don’t think I can make this change directly. The core functionality that uses process.binding is part of the http-deceiver package, which is a dependency of spdy.

Unless we can modify that behavior within http-deceiver/spdy or replace the entire dependency, there may not be much we can do.