vuepress: Application won't start in Internet Explorer 10-11

  • I confirm that this is an issue rather than a question.

Bug report

It looks like Vuepress doesn’t support IE 10-11. There are two causes:

  1. Initially Vuepress uses ‘eval’ source maps, which doesn’t work in IE 10-11.
  2. Vuepress uses dynamically prebuilt ES6 app enhancers, which don’t get transpiled.

Steps to reproduce

  1. Create new vuepress@next project (I’m using 1.0.0-alpha.48 currently)
  2. Start dev-server with npm run docs:dev
  3. Open http://[yout-ip]:8080 in IE 10 or 11
  4. Witness it’s throwing an error at the eval statement
  5. Make sure it’s not evergreen and uses file-based source maps with the following config: module.exports = { evergreen: false, chainWebpack: (config, isServer) => { config.devtool('source-map'); }, };
  6. Refresh your Internet Explorer tab
  7. Witness it’s throwing an error at the ES6-like statement

What is expected?

Vuepress is expected to work with Internet Explorer 10-11.

What is actually happening?

Internet Explorer 10 and 11 can’t start Vuepress app, since it’s using ES6 syntax, which isn’t transpiled.

Other relevant information

  • My VuePress version is lower and euqal than 1.0.0-alpha.47:

    • VuePress version: 1.0.0-alpha.48
    • OS: macOS Mojave 10.14.4 (18E226)
    • Node.js version: v11.10.1
    • Browser version: IE 10.0.9200.17609 and 11.0.9600.19356
    • Is this a global or local install? Local
    • Which package manager did you use for the install? NPM
    • Does this issue occur when all plugins are disabled? Yes
  • My VuePress version is higher than 1.0.0-alpha.47, the following is the output of npx vuepress info in my VuePress project:

System: OS: macOS 10.14.4 CPU: (8) x64 Intel® Core™ i7-4870HQ CPU @ 2.50GHz Binaries: Node: 11.10.1 - ~/.nvm/versions/node/v11.10.1/bin/node Yarn: Not Found npm: 6.9.0 - ~/.nvm/versions/node/v11.10.1/bin/npm Browsers: Chrome: 74.0.3729.169 Firefox: 66.0.5 Safari: 12.1 npmPackages: @vuepress/core: 1.0.0-alpha.48 @vuepress/theme-default: 1.0.0-alpha.48 vuepress: ^1.0.0-alpha.48 => 1.0.0-alpha.48 npmGlobalPackages: vuepress: Not Found

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 2
  • Comments: 17 (6 by maintainers)

Most upvoted comments

@sergeymorkovkin I will try that out and maybe I can come up with a PR fo fix the issue in the core package.

This issue is still present in v1.0.2.

I’m using a number of tweaks to webpack config to bypass this.

// Fix transpilation with IE 10-11
//
function fixTranspileBug(config) {

  // TODO: https://github.com/vuejs/vuepress/issues/1623 - Support IE 10-11
  //

  // This is for @vue/babel-preset-app, or it will 'forget' to inject
  // the most primitive polyfills required by Vue (IE 10/11 support).
  //
  process.env.VUE_CLI_ENTRY_FILES = JSON.stringify(config.entry('app').values());

  // Get existing js rule exclude function
  //
  let existingExcludes = config.module.rule('js').exclude.values();

  // Add rule to always transpile auto-generated sources in .temp
  //
  config.module.rule('js').exclude.clear().add(filePath => {
    const tempPath = config.resolve.alias.get('@temp');
    const clientPath = config.resolve.alias.get('@client');
    if (filePath.startsWith(tempPath) || filePath.startsWith(clientPath)) {
      return false;
    } else {
      for (let i = 0; i < existingExcludes.length; i++) {
        let returnedValue = existingExcludes[i](filePath);
        if (returnedValue !== undefined)
          return returnedValue;
      }
    }
  });

}