webpack: export 'Abc' (imported as 'style') was not found in './style.scss' (possible exports: default)

最近将 webpack 开发模式下对 scss 的处理增加了 style-loader,然后构建过程中会出现类似如下警告信息:

ModuleDependencyWarning: export ‘default’ (imported as ‘style’) was not found in ‘./style.scss’ (possible exports: default)

出现该提示涉及的具体源码类似如下:

import * as style from './style.scss';

console.log(style.Abc);

在 webpack 的 github issues 里搜索到了类似问题:

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

其中主要指出其原因为 esModule 的问题。将 options.esModule 设置为 false 即可。

再结合 style-loader 官方 README.md 中的 esModule 参数介绍可以得知, esModule 参数默认为 true,在实际的构建过程中可以得到 tree-shaking 的效果。

于是可以有如下两种解决方法:

方法一:

import * as xxx from './xxx.css' 改为 import { Abc } from './xxx.css' 方式。

方法二:

设置 esModule 参数为 false,改为使用 CommonJS modules 模式。示例:

{
  test: /\.scss$/,
  use: [
    {
      loader: 'style-loader',
      options: {
        esModule: false,
      },
    },
  ]
}

点赞 (0)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code