'*.mjs' file or a '*.js' file where the package.json contains '"type": "module"'
Module not found: Error: Can't resolve @babel/runtime/helpers/esm ...

问题链接:

https://github.com/webpack/webpack/issues/11467

简单来说就是webpack5之后,加入了对引入mjs等的strict模式并且默认启用,导致一些项目import会有问题。

同时确认自己的webpack版本和babel runtime的版本尽可能是最新的

解决方法是在webpack的config下面的module.rules加入以下:

{
  test: /\.m?js/,
  resolve: {
    fullySpecified: false,
  },
},

使用webpack-chain的修复方式,苦于不知道resolve那一步怎么写,找了很久终于找到了解决办法

https://github.com/neutrinojs/webpack-chain/issues/296

https://github.com/vuejs/vue-cli/blob/next/packages/%40vue/cli-service/lib/config/base.js#L16-L21

webpackConfig.module
      .rule('esm')
        .test(/\.m?jsx?$/)
        .resolve.set('fullySpecified', false)