Registry / devops / node-grpc-web-wrapper

node-grpc-web-wrapper

JSON →
library1.1.0jsnpmunverified

In-process gRPC-Web translator for Node.js, eliminating the need for a separate Envoy proxy. Version 1.1.0 supports unary and server streaming with metadata/trailers and deadlines. It provides both a standalone gRPC-Web server and a generic endpoint for mounting on existing Node HTTP servers (Express, Next.js, etc.), similar to improbable-eng/grpc-web Go wrapper or tonic-web Rust crate. Major differentiator: no proxy required; direct in-process translation. Currently does not support client streaming or bidi streaming due to gRPC-Web limitations. Fully typed with TypeScript definitions.

npm install node-grpc-web-wrapper
INSTALL
IMPORT
SIG · NODE-GRPC-WEB-WRAP
N
node-grpc-web-wrapper
devopsjavascriptv1.1.0
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.

grpcWebHandler
import { grpcWebHandler } from 'node-grpc-web-wrapper';
const grpcWebHandler = require('node-grpc-web-wrapper');
Default export is GrpcWebServer; named export grpcWebHandler is for existing HTTP servers.
GrpcWebServer
import GrpcWebServer from 'node-grpc-web-wrapper';
const GrpcWebServer = require('node-grpc-web-wrapper').default;
ESM default export. For CommonJS, use: const GrpcWebServer = require('node-grpc-web-wrapper').default;

Sets up a standalone gRPC-Web server using the default export GrpcWebServer, with CORS enabled.

import GrpcWebServer from 'node-grpc-web-wrapper'; import { Server, ServerCredentials } from '@grpc/grpc-js'; const grpcServer = new Server(); grpcServer.addService(/* your service definition */, /* your handlers */); GrpcWebServer(grpcServer, { cors: '*' }).listen(8080, () => { console.log('gRPC-Web server running on port 8080'); });
Debug
Known issues
breakingVersion 1.0.0 to 1.1.0 changed default export from grpcWebHandler to GrpcWebServer. Existing code using the default export for middleware will break.
fix
Use named export { grpcWebHandler } for middleware, or use GrpcWebServer for standalone server.
affects: 1.0.0
gotchaGrpcWebServer function expects a grpc.Server instance, not an array of services. Passing an array will result in runtime error.
fix
Always create a new grpc.Server() and add services to it before passing to GrpcWebServer.
affects: >=1.0.0
gotchaFor server streaming endpoints, the client must be gRPC-Web compatible. Browsers with native gRPC-Web support are required; polyfills may not work.
fix
Use a modern browser or a gRPC-Web client library like @improbable-eng/grpc-web.
affects: >=1.0.0
deprecatedThe package currently does not support binary wire format for server streaming (text-only). Future versions may add binary support.
fix
Use text mode (JSON) for server streaming. Upgrade when binary support is added.
affects: <=1.1.0
Errors
Common errors & fixes
Error: grpcWebHandler is not a function
CommonJS require returns a module with exports; grpcWebHandler is a named export but default import is GrpcWebServer.
fix
Use const { grpcWebHandler } = require('node-grpc-web-wrapper');
TypeError: server.addService is not a function
Passing a plain object to GrpcWebServer instead of a grpc.Server instance.
fix
Create a grpc.Server with new Server() and call addService on it.
UnhandledPromiseRejectionWarning: Error: 2 UNIMPLEMENTED
Trying to use client or bidirectional streaming which is not supported.
fix
Ensure your gRPC methods are unary or server streaming only.
Upgrade
Version history
1.1.0latest on npm
Audit
Dependencies
@grpc/grpc-jsrequiredRuntime peer dependency for gRPC server implementation
Agent activity
4 hits · last 30 days
node
4
Resources
node-grpc-web-wrapper — npm install node-grpc-web-wrapper · libregistry