protobuf.js
protobuf.js copied to clipboard
protobufjs library itself doesn't provide module support
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?
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.
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'
}
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.
Seems to have been resolved, no longer getting the error ⭐ 🚀