简体   繁体   English

webpack:如何在node_modules中转换代码

[英]webpack: how to transpile code in node_modules

I want to import nano-memoize in my web application that uses Typescript and Webpack to transpile to ES5. 我想在我的使用Typescript和Webpack转换为ES5的Web应用程序中导入nano-memoize

  • npm install nano-memoize
  • add import 'nano-memoize/browser/nano-memoize' to the source file. import 'nano-memoize/browser/nano-memoize'到源文件。

These steps do not work in IE 11. The page simply doesn't load. 这些步骤在IE 11中不起作用。该页面根本无法加载。

On inspecting the code for nano-memoize/browser/nano-memoize.js in IE 11 developer console, I noticed it uses arrow function. 在IE 11开发人员控制台中检查nano-memoize / browser / nano-memoize.js的代码时,我注意到它使用了箭头功能。 If I copy nano-memoize/browser/nano-memoize.js directly to my source folder, they get transpiled to ES5 and everything works in IE 11 too. 如果我直接将nano-memoize / browser / nano-memoize.js复制到我的源文件夹中,它们将被转换为ES5,并且一切也将在IE 11中正常工作。

So why is nano-memoize/browser/nano-memoize.js not getting transpiled? 那么为什么nano-memoize / browser / nano-memoize.js没有被编译呢?

Build setup: 构建设置:

webpack                   : ^4.40.2,
@babel/core               : ^7.4.0,
awesome-typescript-loader : ^5.2.1,

UPDATE : 更新
This was a webpack configuration issue where the node_modules are excluded from compilation. 这是一个webpack配置问题,其中node_modules从编译中排除。 The skeleton setup is created by a script and my bad I never check this. 骨架设置是由脚本创建的,我不好,我从来没有检查过。 The following in webpack.config.js for babel-loader can selectively compile the required node_modules. bapack-loader的webpack.config.js中的以下内容可以有选择地编译所需的node_modules。 Replace with required module name. 替换为所需的模块名称。

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

通过在项目中使用polyfills进行尝试,以下是脚本标记,可将其导入到index.html文件中<script src="https://cdn.polyfill.io/v3/polyfill.min.js"></script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM