Registry /
http-networking / http-problem-details-mapper
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
ErrorMapper
✓ import { ErrorMapper } from 'http-problem-details-mapper'
✗ const ErrorMapper = require('http-problem-details-mapper').ErrorMapper
ESM supported; use named export. CommonJS require works but use destructuring.
MapperRegistry
✓ import { MapperRegistry } from 'http-problem-details-mapper'
✗ import MapperRegistry from 'http-problem-details-mapper'
MapperRegistry is a named export, not default.
DefaultErrorMapper
✓ import { DefaultErrorMapper } from 'http-problem-details-mapper'
✗ const { defaultErrorMapper } = require('http-problem-details-mapper')
Class name is PascalCase; common camelCase mistake.
Shows full setup: custom error, mapper, registration, and mapping with ProblemDocument.
import { ErrorMapper, MapperRegistry } from 'http-problem-details-mapper';
import { ProblemDocument } from 'http-problem-details';
class NotFoundError extends Error {
constructor(options) {
super();
this.message = `${options.type} with id ${options.id} not found`;
}
}
class NotFoundErrorMapper extends ErrorMapper {
constructor() {
super(NotFoundError);
}
mapError(error) {
return new ProblemDocument({ status: 404, title: error.message, type: 'http://tempuri.org/NotFoundError' });
}
}
class MyMappingStrategy {
constructor(registry) { this.registry = registry; }
map(error) {
const mapper = this.registry.getMapper(error);
if (mapper) return mapper.mapError(error);
throw new Error('Could not map error');
}
}
const registry = new MapperRegistry().registerMapper(new NotFoundErrorMapper());
const strategy = new MyMappingStrategy(registry);
const error = new NotFoundError({ type: 'customer', id: '123' });
const problem = strategy.map(error);
console.log(problem);
Errors
Common errors & fixes
Error: Could not map error
No mapper registered for the error type and useDefaultErrorMapper set to false.
fixRegister a mapper for the error or set useDefaultErrorMapper to true in MapperRegistry constructor.
TypeError: errorMapper is not a constructor
Passed an instance instead of a class to ErrorMapper constructor.
fixUse super(NotFoundError) not super(new NotFoundError()).
Cannot find module 'http-problem-details'
Missing peer dependency.
fixnpm install http-problem-details.
Audit
Dependencies
http-problem-detailsrequiredPeer dependency required for ProblemDocument class