question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Breaking change happened on v8.3.0 (IE 11 support lost)

See original GitHub issue

This package claims to support IE 11 on the readme. But that stopped working on a minor release. From what I can gather, v8.3.0 introduced stringify.js which utilises default parameters. IE 11 does not support default parameters and thus fails.

I’ve managed to fix this issue by using babel, but its worth:

  • Not using modern syntax in minor releases until checking they work in all browsers you’re supporting
  • Either remove IE 11 support or remove usage of default params
  • Using some rollup plugin to compile down to a compatible version

Related to: https://github.com/uuidjs/uuid/issues/469

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Reactions:2
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
ctavancommented, Jan 25, 2021

In the browser config we can only specify file overrides but not entry points. In order to support all the various platforms that we want to support, the different fields in package.json are crafted the way the are:

  • pkg.main is picked up when using the module directly in older Node.js versions. This is the Node.js CommonJS build.
  • pkg.module was originally introduced by webpack for being able to ship an ESM build for bundling. In order to allow webpack builds for Node.js, this points to the Node.js ESModule build.
  • pkg.browser now defines overrides when bundling for the browser but assumes that browser builds want to use the ESM build. We don’t include a CommonJS build for the browser as we haven’t really come across a use case for that.

So in the specific scenario where you define config.resolve.mainFields = ['browser', 'main', 'module'];, the 'main' and 'module' fields inform webpack about the entrypoint to be used. Since 'main' comes first, webpack will pick the Node.js CommonJS build, and won’t find a browser-specific override.

If you swap the order, then webpack will pick the Node.js ESModule build and subsequently find the corresponding browser-specific overrides and use the Browser-specific ESModule build instead.

So the use case where you instruct webpack to use CommonJS builds instead of ESModule builds is one which we currently do not support.

BTW once you upgrade to webpack@5 this problem will also vanish because webpack@5 uses the definitions from pkg.exports instead.

We could “fix” this by providing a CommonJS Browser build. We have deliberately not done this so far because it would further increase the package size while we are not convinced about any clear benefit this would add.

1reaction
jasonwilliamscommented, Jan 25, 2021

my mainfields is set to config.resolve.mainFields = ['browser', 'main', 'module']; which i believe is correct.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Drop IE11 support · Issue #469 · uuidjs/uuid - GitHub
I believe we should drop IE11 support with the next major release. ... Breaking change happened on v8.3.0 (IE 11 support lost) #551....
Read more >
Internet Explorer 11 desktop application ended support for ...
On June 15, 2022, the Internet Explorer 11 desktop application ended support on certain versions of Windows 10*.
Read more >
Fix list for IBM WebSphere Application Server V8.5
The following is a complete listing of fixes for V8.5 with the most recent fix ... edit memberships of garbage collection using Microsoft...
Read more >
Blog - Apache Cordova
We have updated this plugin to support the breaking changes that were introduced in Android 11 around package visibility.
Read more >
ETSI TS 129 168 V8.3.0 (2010-01)
ETSI TS 129 168 V8.3.0 (2010-01) ... y the second digit is incremented for all changes of substance, i.e. technical ... signalling connection...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found