[ 
https://issues.apache.org/jira/browse/AVRO-3322?focusedWorklogId=716167&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-716167
 ]

ASF GitHub Bot logged work on AVRO-3322:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 27/Jan/22 03:02
            Start Date: 27/Jan/22 03:02
    Worklog Time Spent: 10m 
      Work Description: ruleeeer commented on pull request #1473:
URL: https://github.com/apache/avro/pull/1473#issuecomment-1022800836


    @martin-g 
   Could you help me? I have a problem with test case.
   When I use test frameworks (such as Mocha headless chrome or mochify) to 
build tests, they all use 'browserify' to bundle the test code (because Avro 
uses require), but if 'browserify' finds that `require ('buffer ')` is used 
during bundling, it will automatically mount the `Buffer` to the global 
attribute, as shown in the figure below. You can find this part of the document 
here https://github.com/browserify/browserify#compatibility
   <img width="856" alt="image" 
src="https://user-images.githubusercontent.com/70385062/151283397-a017e84f-4918-437c-b442-3f0270d44cce.png";>
   
   This means that if we use the "browserify" test library to bundle code, we 
will never find the problem of "Buffer is not defined". However, Avro browser 
uses require, we must rely on bundling to convert it into a syntax recognized 
by the browser. In this way, how should we build test cases? (I can't imagine 
how to do this without webpack or rollup)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 716167)
    Time Spent: 2h  (was: 1h 50m)

> 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
>            Priority: Blocker
>              Labels: pull-request-available
>         Attachments: image-2022-01-25-15-57-43-468.png
>
>          Time Spent: 2h
>  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