improbable-eng / grpc-web

gRPC Web implementation for Golang and TypeScript
Apache License 2.0
4.39k stars 436 forks source link

grpc-web: Importing as ESModule in Node #1171

Open tommie opened 1 year ago

tommie commented 1 year ago

Versions of relevant software used

What happened

Similar to #369, attempting to run this (named repro.mjs) under Node fails:

import { grpc } from "@improbable-eng/grpc-web";

with

import { grpc } from "@improbable-eng/grpc-web";                                             
         ^^^^                    
SyntaxError: Named export 'grpc' not found. The requested module '@improbable-eng/grpc-web' is a CommonJS module, which may not support all module.exports as named exports.               
CommonJS modules can always be imported via the default export, for example using:           

What you expected to happen

No error.

How to reproduce it (as minimally and precisely as possible):

https://stackblitz.com/edit/stackblitz-webcontainer-api-starter-uuifs3?file=repro.js&view=editor

Run npm run repro

It looks like building for ESM (as originally suggested in #369) and adding an exports.import field in package.json makes it importable: https://github.com/improbable-eng/grpc-web/compare/master...tommie:grpc-web:esm?expand=1

andriy-bilyak commented 1 year ago

Any solutions?