首页 > 解决方案 > webpack:如何在 node_modules 中转换代码

问题描述

我想在使用 Typescript 和 Webpack 转换为 ES5 的 Web 应用程序中导入nano-memoize 。

这些步骤在 IE 11 中不起作用。页面根本无法加载。

在 IE 11 开发者控制台中检查 nano-memoize/browser/nano-memoize.js 的代码时,我注意到它使用了箭头函数。如果我将 nano-memoize/browser/nano-memoize.js 直接复制到我的源文件夹,它们会被转译为 ES5,并且一切都在 IE 11 中运行。

那么为什么 nano-memoize/browser/nano-memoize.js 没有被转译呢?

构建设置:

网络包:^4.40.2,
@babel/核心:^7.4.0,
真棒打字稿加载器:^5.2.1,

更新
这是一个 webpack 配置问题,其中 node_modules 被排除在编译之外。骨架设置是由脚本创建的,我的错误是我从不检查这个。webpack.config.js 中的以下内容用于 babel-loader 可以选择性地编译所需的 node_modules。替换为所需的模块名称。

{
  test: /\.js$/,
  exclude: function(modulePath) {
    return /node_modules/.test(modulePath) &&
        !/node_modules\/<MY_MODULE>/.test(modulePath);
  }
}

标签: javascriptwebpackbabeljs

解决方案


在您的项目中使用 polyfill 尝试一下,下面是要在 index.html 文件中导入的脚本标签 <script src="https://cdn.polyfill.io/v3/polyfill.min.js"></script>


推荐阅读