[
https://issues.apache.org/jira/browse/AVRO-3322?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Tzvetanov Grigorov resolved AVRO-3322.
---------------------------------------------
Fix Version/s: 1.11.1
1.12.0
Assignee: Martin Tzvetanov Grigorov
Resolution: Fixed
> Buffer is not defined in browser environment
> --------------------------------------------
>
> Key: AVRO-3322
> URL: https://issues.apache.org/jira/browse/AVRO-3322
> Project: Apache Avro
> Issue Type: Bug
> Components: js
> Environment: Firefox 96 & Brave 1.34(based on chromium)
> Reporter: ruleeeer
> Assignee: Martin Tzvetanov Grigorov
> Priority: Blocker
> Labels: pull-request-available
> Fix For: 1.11.1, 1.12.0
>
> Attachments: image-2022-01-25-15-57-43-468.png
>
> Time Spent: 3h 10m
> Remaining Estimate: 0h
>
> When I use avro in my browser, I find that I get the `Buffer is undefined
> error`
> !image-2022-01-25-15-57-43-468.png!
> The code I use is simple, it comes from the github repository readme.md
> {code:javascript}
> var avro = require('avro-js');
> var type = avro.parse({
> name: 'Pet',
> type: 'record',
> fields: [
> {name: 'kind', type: {name: 'Kind', type: 'enum', symbols: ['CAT',
> 'DOG']}},
> {name: 'name', type: 'string'}
> ]
> });
> var pet = {kind: 'CAT', name: 'Albert'};
> var buf = type.toBuffer(pet); // Serialized object.
> var obj = type.fromBuffer(buf); // {kind: 'CAT', name: 'Albert'}
> {code}
> Later I traced the source code and found that Buffer is used directly in
> `/etc/browser/avro.js` and `/lib/schema.js`, which is not a problem in the
> node environment because the Buffer object is mounted globally, but it is a
> problem in the browser environment because using buffer polyfill will not
> mount the Buffer object globally, You need to declare `var Buffer =
> require('buffer').Buffer` manually, so that it can be used in the browser
> environment without affecting the node environment, which also gets its
> Buffer from require('buffer').
--
This message was sent by Atlassian Jira
(v8.20.1#820001)