protobuf.js icon indicating copy to clipboard operation
protobuf.js copied to clipboard

protobufjs library itself doesn't provide module support

Open gertcuykens opened this issue 6 years ago • 5 comments

protobuf.js version: 6.8.8 example: https://github.com/gertcuykens/protobuf

Generated modules looks ok using

pbjs -p . task.proto -t static-module -w es6 -o task.pb.mjs
import protobuf from 'protobufjs'
import {Task} from './task/task.pb.mjs'

But it seems the protobufjs library itself doesn't provide module support?

node --experimental-modules task_test.mjs 
(node:1831) ExperimentalWarning: The ESM module loader is experimental.
internal/modules/esm/default_resolve.js:69
  let url = moduleWrapResolve(specifier, parentURL);
            ^

Error: Cannot find module '/Users/gert/go/src/github.com/gertcuykens/protobuf/node_modules/protobufjs/minimal' imported from /Users/gert/go/src/github.com/gertcuykens/protobuf/task/task.pb.mjs
    at Loader.resolve [as _resolve] (internal/modules/esm/default_resolve.js:69:13)
    at Loader.resolve (internal/modules/esm/loader.js:70:33)
    at Loader.getModuleJob (internal/modules/esm/loader.js:143:40)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:43:40)
    at link (internal/modules/esm/module_job.js:42:36)
gert@gert ~/go/src/github.com/gertcuykens/protobuf:master>

Suggest to make a seperate protobufjs/minimal.mjs and protobufjs/index.mjs maybe to have full module support out of the box?

gertcuykens avatar May 27 '19 11:05 gertcuykens

This would be particularly useful to support deno. I would love to help with this, but since protobuf.js uses CommonJS, a design decision needs to be made on how to approach this.

seishun avatar Feb 17 '20 14:02 seishun

Any more updates/info on this one?

Using ES6 modules in Node via "type" : "module" in package.json in the root project does not seem to work with protobufjs.

internal/process/esm_loader.js:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '[project]/node_modules/protobufjs/minimal' imported from [project]/dist/proto.js
    at finalizeResolution (internal/modules/esm/resolve.js:275:11)
    at moduleResolve (internal/modules/esm/resolve.js:719:10)
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:809:11)
    at Loader.resolve (internal/modules/esm/loader.js:85:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)
    at link (internal/modules/esm/module_job.js:50:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

hsjoberg avatar Sep 09 '20 00:09 hsjoberg

Trying to import as ESM module to vite project also fails.

I am adding protobuf globally to the page to make it work, but ESM support could be nice.

paweld2 avatar Sep 10 '20 11:09 paweld2

Seems to have been resolved, no longer getting the error ⭐ 🚀

antonio-ivanovski avatar Sep 21 '22 19:09 antonio-ivanovski