Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
bpmnEngineMiddleware
✓ import { bpmnEngineMiddleware } from 'bpmn-middleware'
✗ const { bpmnEngineMiddleware } = require('bpmn-middleware')
Package is ESM-only; CommonJS require will fail. Use dynamic import if needed.
HttpError
✓ import { HttpError } from 'bpmn-middleware'
Named export for HTTP error handling in middleware.
MemoryAdapter
✓ import { MemoryAdapter } from 'bpmn-middleware'
✗ import MemoryAdapter from 'bpmn-middleware'
MemoryAdapter is a named export, not default.
Sets up Express with bpmn-middleware, MemoryAdapter, broker, and engine cache. Handles errors with HttpError.
import { createRequire } from 'node:module';
import { fileURLToPath } from 'node:url';
import express from 'express';
import { Broker } from 'smqp';
import { LRUCache } from 'lru-cache';
import { bpmnEngineMiddleware, HttpError, MemoryAdapter } from 'bpmn-middleware';
import * as bpmnElements from 'bpmn-elements';
const isMainModule = process.argv[1] === fileURLToPath(import.meta.url);
const nodeRequire = createRequire(import.meta.url);
const camunda = nodeRequire('camunda-bpmn-moddle/resources/camunda.json');
const app = express();
const adapter = new MemoryAdapter();
const broker = (app.locals.broker = new Broker(app));
const engineCache = (app.locals.engineCache = new LRUCache({ max: 1000 }));
broker.assertExchange('event', 'topic', { durable: false, autoDelete: false });
const middleware = bpmnEngineMiddleware({
adapter,
broker,
engineCache,
Scripts: null,
engineOptions: {
moddleOptions: { camunda },
elements: bpmnElements,
},
});
app.use('/rest', middleware);
app.use((err, req, res, next) => {
if (err instanceof HttpError) return res.status(err.statusCode).send({ message: err.message });
res.status(502).send({ message: err.message });
});
if (isMainModule) {
app.listen(3000);
}
export { app };
Errors
Common errors & fixes
Error [ERR_REQUIRE_ESM]: require() of ES Module not supported.
Using require() on the package which is ESM-only.
fixChange to import syntax or use dynamic import().
Cannot find module '@0dep/piso'
Peer dependency not installed.
fixRun npm install @0dep/piso bpmn-elements bpmn-engine debug express smqp
TypeError: bpmnEngineMiddleware is not a function
Attempting to use default import instead of named import.
fixUse import { bpmnEngineMiddleware } from 'bpmn-middleware' Audit
Dependencies
@0dep/pisorequiredISO date/time utilities
bpmn-elementsrequiredBPMN element implementations
bpmn-enginerequiredCore BPMN engine
debugrequiredDebug logging
expressrequiredWeb framework
smqprequiredSimple message queue protocol