Open fraitag opened 5 months ago
Related issue (?) https://github.com/feross/buffer/issues/359
Probably yes. However, I am unsure about the specific version included in the Next.js polyfill. This library is precompiled and is not a Node.js package.
I'm guessing 5.x by looking at the compiled/vendored dependency.
On another note, why do you need Buffer in the browser? It is often a sign that code you don't mean to ship to the client, is making its way there, often through browserify
Absolutely, but the external library I use has protection against the lack of Buffer in the environment and executes the logic according to a different path. However, the nextjs mechanisms detect the presence of the word "Buffer" in the external module's code and add a polyfill (though it is not required because the library protects itself against it).
Which does not change the fact that since NextJS gives information that it supports Safari 12+, it also expects it.
Buffer doesn't exist in browsers though.
It is not just Buffer usage that triggers browserification of Buffer, often usage of crypto, or some Node.js modules, does as well.
Kind of a gray area situation here, can you try out on Safari 14, if the latest buffer (v6) npm package, does work? does v4 work?
Unfortunately, I wasn’t able to build Next.js correctly when I swapped out the Buffer version. I need more time for that. Would anyone else be willing to help?
My error:
Err, I meant more like:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script src="https://bundle.run/buffer@4.9.2"></script>
<div>Hi</div>
</body>
</html>
And open that in your Safari 14 browser. Try with 6.0.3
and 5.7.1
, as well. Do you see the issue at all?
From bundle.run I do not have any errors, tested on Mojave Safari 12.1
Oh that's really, not what I had expected... 🤔
I searched for the compile PR from 3 years ago, and found that it was "buffer": "5.6.0",
that was initially vendored in:
but that worked on your test...
If you copy the code from, https://github.com/vercel/next.js/blob/canary/packages/next/src/compiled/buffer/index.js#L5, and put it in a file.js and make a script pointing to it, rather than bundle.run, what do you get?
Link to the code that reproduces this issue
https://codesandbox.io/p/devbox/floral-snowflake-cyrx5f
To Reproduce
Add something with Buffer on client side Try open page on IOS lower then 14 Console report the error:
Current vs. Expected behavior
The polyfill should work on versions supported by Next.js.
Provide environment information
Which area(s) are affected? (Select all that apply)
Not sure, Webpack
Which stage(s) are affected? (Select all that apply)
next dev (local), next build (local), next start (local)
Additional context
No response