Gatsby 导入 babel polyfill

Gatsby import babel polyfill

我 运行 遇到的根本问题是 IE11 因 Object doesn't support property or method 'find' 而失败。看来我需要导入babel-polyfill,但是我找不到合适的导入位置。

我该怎么办?

  • 您可以尝试使用 babel-presets-env,因为您需要的 polyfill 包含在预设中。
  • 否则,我强烈建议 http://polyfill.io/ 如果您可以依赖第 3 方服务,那么可以使所有这些 polyfiling 的东西变得更加简单。

解决方案:

// gatsby-node.js

exports.modifyWebpackConfig = ({ config, stage }) => {
    if (stage === "build-javascript") {
        config._config.entry.app = ["babel-polyfill", config.resolve().entry.app];
    }

    return config;
};

唯一脏的部分是访问私有(下划线前缀)_config 属性。 理论上,更合适的解决方案应该是这样的:

exports.modifyWebpackConfig = ({ config, stage }) => {
    if (stage === "build-javascript") {
        config.merge({
            entry: {app: ["babel-polyfill", config.resolve().entry.app]}
        });
    }

    return config;
};

这不起作用的原因是因为原始 entry.app 值是一个字符串,而我的新 entry.app 值是一个数组,合并函数试图通过推送来合并两者原始字符串的每个单独字符作为新数组的元素。如果有人知道如何使更好的解决方案起作用,我很乐意改进这个答案,但在那之前,前者至少起作用。