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.
serverProxy
✓ const { serverProxy } = require('grpc-interceptors');
✗ import { serverProxy } from 'grpc-interceptors';
Package is CJS-only; no ESM exports.
clientProxy
✓ const { clientProxy } = require('grpc-interceptors');
✗ const interceptors = require('grpc-interceptors'); const client = interceptors.clientProxy(new grpc.Client(...));
clientProxy wraps a grpc.Client instance.
default export (interceptors)
✓ const interceptors = require('grpc-interceptors');
✗ const interceptors = require('grpc-interceptors').default;
Package exports a namespace object with serverProxy and clientProxy.
Creates a gRPC server with interceptor middleware for authentication using metadata.
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const interceptors = require('grpc-interceptors');
// Load proto and create server
const packageDefinition = protoLoader.loadSync('service.proto');
const proto = grpc.loadPackageDefinition(packageDefinition);
const server = interceptors.serverProxy(new grpc.Server());
server.addService(proto.mypackage.MyService.service, {
myMethod: (call, callback) => {
callback(null, { message: 'Hello ' + call.request.name });
}
});
const myMiddleware = async (ctx, next, callback) => {
// Authentication check
const user = ctx.call.metadata.get('user')[0];
const pass = ctx.call.metadata.get('password')[0];
if (user === 'admin' && pass === 'secret') {
await next();
} else {
callback(new Error('Unauthorized'));
}
};
server.use(myMiddleware);
server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
console.log('Server running...');
});
Errors
Common errors & fixes
TypeError: ctx.call.metadata._internal_repr is undefined
Metadata structure changed in newer @grpc/grpc-js versions.
fixUse ctx.call.metadata.get('key') instead. Error: The callback must be called exactly once
Callback invoked more than once or not at all in interceptor.
fixEnsure callback is called exactly once, either directly or via `await next()`.
Cannot find module 'grpc-interceptors'
Package not installed; installation is via git URL.
fixnpm install git+https://github.com/mfecteau34/node-grpc-interceptors.git
Audit
Dependencies
@grpc/grpc-jsrequiredPeer dependency required for gRPC functionality
lodashoptionalCommonly used in examples for accessing metadata; not a required dependency but typical