Skip to content

Optional peer dependencies should not be required #21

@StefanTheWiz

Description

@StefanTheWiz

I've tried running the code at https://github.com/floydspace/effect-kafka/blob/main/examples/consumer.ts with kafkajs

It appears that in order to run that, it also requires @confluentinc/kafka-javascript which is marked as an optional peer dependency here

My set up:

yarn add effect-kaka kafkajs
cp examples/consumer.ts example.mjs
node example.mjs

node:internal/modules/cjs/loader:1225
  const err = new Error(message);
              ^

Error: Cannot find module '@confluentinc/kafka-javascript'
Require stack:
- /path/to/project/node_modules/effect-kafka/lib/ConfluentKafkaJSInstance.js
- /path/to/project/node_modules/effect-kafka/lib/index.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1225:15)
    at Module._load (node:internal/modules/cjs/loader:1051:27)
    at Module.require (node:internal/modules/cjs/loader:1311:19)
    at require (node:internal/modules/helpers:179:18)
    at Object.<anonymous> (/path/to/project/node_modules/effect-kafka/lib/ConfluentKafkaJSInstance.js:30:28)
    at Module._compile (node:internal/modules/cjs/loader:1469:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)
    at Module.load (node:internal/modules/cjs/loader:1288:32)
    at Module._load (node:internal/modules/cjs/loader:1104:12)
    at Module.require (node:internal/modules/cjs/loader:1311:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/path/to/project/node_modules/effect-kafka/lib/ConfluentKafkaJSInstance.js',
    '/path/to/project/node_modules/effect-kafka/lib/index.js'
  ]
}

I can make it work by changing to more granular imports but I wonder if there are better ways to handle this

import * as KafkaJSInstance from "effect-kafka/lib/KafkaJSInstance.js";
import * as Consumer from "effect-kafka/lib/Consumer.js";
import * as ConsumerRecord from "effect-kafka/lib/ConsumerRecord.js";
import * as MessageRouter from "effect-kafka/lib/MessageRouter.js";

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions