Registry / testing / nyc-middleware

nyc-middleware

JSON →
library1.0.4jsnpmunverified

Connect/Express middleware for NYC (Istanbul) code coverage in server-side and client-side Node.js applications. Version 1.0.4 is current. Provides hookLoader to instrument server code via require() hooks, createHandler to expose live coverage reports (HTML/JSON/lcov), reset, and download endpoints under /coverage, and createClientHandler to serve instrumented browser JS. Ported from istanbul-middleware to use nyc (istanbul v2). No longer actively maintained; latest release is stable.

npm install nyc-middleware
INSTALL
IMPORT
SIG · NYC-MIDDLEWARE
N
nyc-middleware
testingjavascriptv1.0.4
harness data pending
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.

hookLoader
import { hookLoader } from 'nyc-middleware';
const { hookLoader } = require('nyc-middleware');
ESM or CJS both work; package does not enforce ESM.
createHandler
import { createHandler } from 'nyc-middleware';
const handler = require('nyc-middleware').createHandler;
Preferred named import for clarity.
createClientHandler
import { createClientHandler } from 'nyc-middleware';
const createClientHandler = require('nyc-middleware').createClientHandler;
For browser-side instrumentation.

Sets up NYC middleware coverage on Express: hooks require() and exposes /coverage endpoints.

import express from 'express'; import { hookLoader, createHandler } from 'nyc-middleware'; const app = express(); const isCoverageEnabled = process.env.COVERAGE === 'true'; if (isCoverageEnabled) { console.log('Hooking loader for coverage (not for production!)'); hookLoader(__dirname, { verbose: true }); } // require your modules after hooking import stuff from './lib'; if (isCoverageEnabled) { app.use('/coverage', createHandler()); } app.get('/', (req, res) => res.send('Hello World')); app.listen(3000);
Debug
Known issues
deprecatedPackage is based on istanbul-middleware and uses nyc v1. Use a more modern solution like c8 or @istanbuljs/nyc-config-babel for active projects.
fix
Migrate to c8 (built into Node 14+) or use @istanbuljs/nyc-config-babel directly.
affects: *
gotchahookLoader must be called before any require() calls that load the code to be covered. Otherwise coverage will be missing.
fix
Call hookLoader at the very top of your main entry point before requiring any local modules.
affects: *
gotchaThe createClientHandler for browser coverage only works with simple absolute URLs; frameworks like Angular/React may need custom handling.
fix
Write custom middleware to instrument browser JS or use nyc's built-in instrument command.
affects: *
breakingVersion 1.0.x dropped support for Node <0.10 – but as of 2025 this is not an issue; however, the package may have compatibility issues with modern Node versions (>=14).
fix
Test coverage on your Node version; consider using c8 for native ESM coverage.
affects: >=1.0.0
Errors
Common errors & fixes
Error: Cannot find module 'nyc-middleware'
nyc-middleware is not installed or not in node_modules.
fix
Run: npm install nyc-middleware
TypeError: hookLoader is not a function
Improper import/require; possibly using default import instead of named.
fix
Use: import { hookLoader } from 'nyc-middleware';
ReferenceError: __dirname is not defined
Using ES modules with __dirname; __dirname is not available in ESM.
fix
Use: import { fileURLToPath } from 'url'; const __dirname = fileURLToPath(new URL('.', import.meta.url));
Upgrade
Version history
1.0.4latest on npm
Audit
Dependencies
nycrequiredRequires nyc to be installed in the project as it uses nyc's coverage instrumentation.
expressoptionalDesigned to work with Express/Connect middleware – may need express for createHandler usage.
Agent activity
6 hits · last 30 days
node
6
Resources
nyc-middleware — npm install nyc-middleware · libregistry