Cuando traté de ejecutar el siguiente código en Visual Studio, recibí el siguiente error:
TypeError: eventType.toBuffer no es una función en queueRandomMessage
Código:
const Kafka = require('node-rdkafka'); const eventType = require('../eventType.js'); const stream = Kafka.Producer.createWriteStream({ 'metadata.broker.list': 'localhost:9092' }, {}, { topic: 'test' }); stream.on('error', (err) => { console.error('Error in our kafka stream'); console.error(err); }); function queueRandomMessage() { const category = getRandomAnimal(); const noise = getRandomNoise(category); const event = { category, noise }; const success = stream.write(eventType.toBuffer(event)); if (success) { console.log(`message queued (${JSON.stringify(event)})`); } else { console.log('Too many messages in the queue already..'); } } function getRandomAnimal() { const categories = ['CAT', 'DOG']; return categories[Math.floor(Math.random() * categories.length)]; } function getRandomNoise(animal) { if (animal === 'CAT') { const noises = ['meow', 'purr']; return noises[Math.floor(Math.random() * noises.length)]; } else if (animal === 'DOG') { const noises = ['bark', 'woof']; return noises[Math.floor(Math.random() * noises.length)]; } else { return 'silence..'; } } setInterval(() => { queueRandomMessage(); }, 3000);Este es el código para eventType.js que usé:
const avro = require('avsc'); module.export = avro.Type.forSchema({ type: 'record', fields: [ { name: 'category', type: { type: 'enum', symbols: ['DOG', 'CAT'] } }, { name: 'noise', type: 'string', } ] });¿Qué debo hacer para corregir este error?
Debería ser module.exports
const avro = require('avsc'); module.exports = avro.Type.forSchema({ type: 'record', fields: [ { name: 'category', type: { type: 'enum', symbols: ['DOG', 'CAT'] } }, { name: 'noise', type: 'string', } ] });