Visitar URL original
Regression failure upgrading from 2.5.0 to 2.5.1+, webpack fails to transpile new export statement for ES5. · Issue #231 · microsoft/tslib · GitHub
Skip to content

Regression failure upgrading from 2.5.0 to 2.5.1+, webpack fails to transpile new export statement for ES5. #231

Open

Description

@jbalinski

We are attempting to upgrade to the latest version of tslib but ran into an issue with IE11. We are targeting ["web", "es5"] in our webpack.config.js. We are also have importHelpers set to true in our tsconfig.json. With this configuration IE11 no longer runs in webpack development mode.

It appears that the breaking change was made in tslib 2.5.1. The following export was added to tslib.es6.mjs:

export default {
  __extends,
  __assign,
  __rest,
  __decorate,
  __param,
  __metadata,
  __awaiter,
  __generator,
  __createBinding,
  __exportStar,
  __values,
  __read,
  __spread,
  __spreadArrays,
  __spreadArray,
  __await,
  __asyncGenerator,
  __asyncDelegator,
  __asyncValues,
  __makeTemplateObject,
  __importStar,
  __importDefault,
  __classPrivateFieldGet,
  __classPrivateFieldSet,
  __classPrivateFieldIn,
};

This ES6 style of export is not transpiled by webpack when running in development mode and which causes the issue in IE11. The issue does not occur when running in production mode. One workaround is to manually include the es5 compliant tslib.js file on our pages and take webpack out of the picture.

Activity

  1. jakebailey commented on Dec 5, 2023

    @jakebailey
    Member

    If you're targeting es5 in your webpack config, then this file should be getting downleveled in syntax by webpack or babel or similar; this file is .mjs after all and is intended to contain ESM syntax like the above. This (to me) sounds like a bug in webpack or an incorrect configuration that isn't downleveling all of the files in a build.

  2. DDHSchmidt commented on Sep 25, 2024

    @DDHSchmidt

    Thank you so much for this issue!
    I had to switch devices and was unable to reproduce an IE11-compatible build on my new machine.
    Now I really know to appreciate the difference between "tslib": "^2.5.0" and "tslib": "2.5.0" 👍

  3. maknapp commented on Apr 30, 2025

    @maknapp

    While typescript's target option outputs es5 syntax, webpack's target option does not actually transpile everything to es5, just import/export statements.

    From webpack docs:

    Note that webpack will not alter any code other than import and export statements. If you are using other ES2015 features, make sure to use a transpiler such as Babel via webpack's loader system.

    When importHelpers is true, tslib is being imported from node_modules directly as-is, which is now an .es6.mjs file. The fix for this is to use babel-loader and make sure node_modules (or at least tslib) is not excluded.

    This issue can probably be closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions