[ 
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)

Reply via email to