{"id":48038,"library":"grpc-js-helper","title":"grpc-js-helper","description":"A utility library for @grpc/grpc-js providing helper types and functions such as ServiceError, ServiceStatus, and serviceCall for easier gRPC error handling and status codes. Version 0.3.0 is current, with stable release cadence. Key differentiators: lightweight, type-safe wrappers for gRPC client calls, and consistent error handling patterns.","status":"active","version":"0.3.0","language":"javascript","source_language":"en","source_url":"https://github.com/magiclen/grpc-js-helper","tags":["javascript","year","date","leap","typescript"],"install":[{"cmd":"npm install grpc-js-helper","lang":"bash","label":"npm"},{"cmd":"yarn add grpc-js-helper","lang":"bash","label":"yarn"},{"cmd":"pnpm add grpc-js-helper","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency for gRPC client functionality","package":"@grpc/grpc-js","optional":false}],"imports":[{"note":"Named export, not default.","wrong":"import ServiceError from 'grpc-js-helper'","symbol":"ServiceError","correct":"import { ServiceError } from 'grpc-js-helper'"},{"note":"ESM only; Node >=20 required.","wrong":"const { ServiceStatus } = require('grpc-js-helper')","symbol":"ServiceStatus","correct":"import { ServiceStatus } from 'grpc-js-helper'"},{"note":"Async function that wraps gRPC client methods.","wrong":"","symbol":"serviceCall","correct":"import { serviceCall } from 'grpc-js-helper'"}],"quickstart":{"code":"import { ServiceError, ServiceStatus, serviceCall } from 'grpc-js-helper';\nimport * as grpc from '@grpc/grpc-js';\nimport protoLoader from '@grpc/proto-loader';\n\nconst packageDefinition = protoLoader.loadSync('helloworld.proto');\nconst proto = grpc.loadPackageDefinition(packageDefinition).helloworld;\nconst client = new proto.Greeter('localhost:50051', grpc.credentials.createInsecure());\n\nasync function sayHello(name: string) {\n  try {\n    const response = await serviceCall(client.sayHello({ name }));\n    console.log('Greeting:', response.message);\n  } catch (error) {\n    if (error instanceof ServiceError) {\n      console.error('gRPC error:', error.code, error.details);\n    } else {\n      console.error('Unexpected error:', error);\n    }\n  }\n}\n\nsayHello(process.env.NAME ?? 'World');","lang":"typescript","description":"Shows how to use serviceCall with a gRPC client, handle ServiceError, and check ServiceStatus codes."},"warnings":[{"fix":"Pass the return value of a gRPC client method (e.g., client.sayHello({...})), not await it.","message":"`serviceCall` expects a gRPC ClientUnaryCall object, not a Promise.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Update Node.js to >=20 or use an older version of the package.","message":"Requires Node >=20 due to ESM-only exports.","severity":"breaking","affected_versions":">=0.3.0"},{"fix":"Monitor GitHub for updates or consider alternatives.","message":"The package may not be actively maintained; check before use in production.","severity":"deprecated","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.3.0':30 'cadenc':36 'call':47 'client':46 'code':28 'consist':49 'current':32 'date':55 'differenti':38 'easier':22 'error':24,50 'function':14 'grpc':2,23,45 'grpc-js-helper':1 'grpc/grpc-js':9 'handl':25,51 'helper':4,11 'javascript':53 'js':3 'key':37 'leap':56 'librari':7 'lightweight':39 'pattern':52 'provid':10 'releas':35 'safe':42 'servicecal':20 'serviceerror':17 'servicestatus':18 'stabl':34 'status':27 'type':12,41 'type-saf':40 'typescript':57 'util':6 'version':29 'wrapper':43 'year':54","created_at":"2026-06-07T16:54:36.538167+00:00","updated_at":"2026-06-07T16:54:36.538167+00:00","problems":[{"fix":"Use `import { serviceCall } from 'grpc-js-helper'` instead of `import serviceCall from 'grpc-js-helper'`.","cause":"Default import used instead of named import.","error":"TypeError: serviceCall is not a function"},{"fix":"Use import syntax or switch to dynamic import(). Ensure Node >=20.","cause":"Package is ESM-only, cannot use require().","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module not supported"},{"fix":"Run `npm install @grpc/grpc-js`.","cause":"`@grpc/grpc-js` not installed.","error":"Class extends value undefined is not a constructor or null"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://magiclen.org/grpc-js-helper/","github":"https://github.com/magiclen/grpc-js-helper","docs":null,"changelog":null,"pypi":null,"npm":"grpc-js-helper","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}