You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js问题:使用next-sass时Webpack ExtractTextPlugin无法提取node_modules中的SCSS

嘿,我来帮你解决这个Next.js里引入带SCSS的外部组件的问题!你遇到的这个错误,本质是Next.js默认不会处理node_modules目录下的SCSS文件——哪怕用了withSass插件也一样,它默认只处理你项目内部的样式文件。当外部组件(比如你这里的star-rating)试图引入自己的SCSS时,Webpack没办法解析这些SCSS语法,就抛出了那个@import "_vars"的错误。

给你几个可行的解决方案:

方案一:修改Webpack配置,让它处理指定外部组件的SCSS

首先确保你已经装了必要的依赖:sass、@zeit/next-sass(如果是Next.js 12+的话其实不需要这个插件,后面会单独说明)。然后修改你的next.config.js,扩展Webpack规则,把外部组件的目录加入到SCSS处理范围里:

const withSass = require('@zeit/next-sass');

module.exports = withSass({
  webpack(config, options) {
    // 找到已有的SCSS规则
    const sassRule = config.module.rules.find(rule => rule.test.toString().includes('.scss'));
    if (sassRule) {
      // 把star-rating的目录加入到include列表里
      sassRule.include.push(/node_modules\/star-rating/);
    }
    return config;
  }
});

如果上面的方式不生效,你也可以直接新增一条专门处理star-rating的SCSS规则:

const withSass = require('@zeit/next-sass');

module.exports = withSass({
  webpack(config) {
    config.module.rules.push({
      test: /\.scss$/,
      include: /node_modules\/star-rating/,
      use: [
        'style-loader',
        'css-loader',
        'sass-loader'
      ]
    });
    return config;
  }
});

方案二:直接引入外部组件编译好的CSS(更省心)

你可以看看star-rating的package.json,有没有指向编译好的CSS文件的字段(比如style或者main)。如果有的话,直接引入它的CSS文件而非SCSS,比如:

import 'star-rating/dist/style.css'; // 具体路径以组件实际输出为准

这样就绕开了处理SCSS的环节,简单又高效。

针对Next.js 12+的额外说明

如果你用的是Next.js 12或更高版本,官方已经自带了Sass支持,不需要再依赖@zeit/next-sass插件。可以直接这样配置next.config.js:

module.exports = {
  sassOptions: {
    includePaths: ['./node_modules/star-rating/src/styles'],
  },
  webpack(config) {
    config.module.rules.push({
      test: /\.scss$/,
      include: /node_modules\/star-rating/,
      use: ['style-loader', 'css-loader', 'sass-loader']
    });
    return config;
  }
};

记得要安装相关依赖,没装的话执行下面的命令:

npm install style-loader css-loader sass-loader sass --save-dev

试试这些方法,应该就能解决你的问题了!

内容的提问来源于stack exchange,提问作者Antoine Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:46:53