使用next.js babel转换了aws-amplify,但不适用于ie11

时间:2019-10-01 17:21:25

标签: javascript node.js babeljs next.js aws-amplify

我正在使用next.js和@ aws-amplify。 但是,在ie11上运行时发生错误。

首先,@ aws-amplify使用了ie11不支持的Object.assign。

Error was not caught TypeError: Object doesn't support property or method 'assign'

因此,在babel中加载node_modules / @ aws-amplify。

const excludeModules = [
  '@aws-amplify',
];

const reModules = excludeModules.map((module) => (
  new RegExp(`/node_modules/${module}`)
));

module.exports = {
  crossOrigin: 'anonymous',

  webpack: (config) => {
    config.module.rules.forEach((rule) => {
      rule.include.push([
        path.join(__dirname, 'src'),
        ...excludeModules.map((module) => path.join(__dirname, `node_modules/${module}`)),
      ]);

      rule.exclude = path => {
        if (/next-server[\\/]dist[\\/]lib/.test(path)
          || /next[\\/]dist[\\/]client/.test(path)
          || /next[\\/]dist[\\/]pages/.test(path)
          || /[\\/](strip-ansi|ansi-regex)[\\/]/.test(path)
        ) {
          return false;
        }

        if (reModules.some(re => re.test(path))) {
          return false;
        }

        return /node_modules/.test(path);
      };
    });

    return config;
  },
};

Object.assign的问题已解决。 但是接下来我遇到了graphql错误。

IE - graphql - SCRIPT5022: Cannot use undefined “Boolean” from another module or realm

graphql也是babel的目标,但它不是固定的。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name

使用“ transform-runtime”,我想使它与ie11一起使用Function.name。不想更新全局Function.name。

在这种情况下,如何解决next.js babel设置?

0 个答案:

没有答案