webpack 为什么我在尝试编译Sass模板时得到“需要2个参数,但只传递了1个参数”?

vdzxcuhz  于 12个月前  发布在  Webpack
关注(0)|答案(4)|浏览(309)

我在生成项目时遇到以下错误

SassError: 2 arguments required, but only 1 was passed.
    width: rem(300);
           ^^^^^^^^

字符串
下面是我的package.json

{
  "name": "test",
  "version": "3.0.0",
  "private": true,
  "scripts": {
   
  },
  "devDependencies": {
    "mini-css-extract-plugin": "^2.4.2",
    "node-sass": "^6.0.1",
    "postcss": "^8.3.9",
    "postcss-loader": "^6.2.0",
    "postcss-preset-env": "^6.7.0",
    "sass": "^1.3",
    "sass-loader": "^12.1.0"
  },
  "dependencies": {
    "grunt-sass": "^3.1.0"
  }

}


问题出在哪里?

zdwk9cvp

zdwk9cvp1#

今天遇到了同样的问题,我在package.json中有“sass”:“^1.26.5”。
sass昨天更新到了1.65.1,你的构建应该可以使用1.64.2 https://www.npmjs.com/package/sass/v/1.65.1?activeTab=versions我遇到这个问题是因为另一个我无法控制的依赖,所以改变sass版本是现在唯一的选择。但是如果你在自己的代码中使用了rem(),请使用Ali Klein的答案。

axzmvihb

axzmvihb2#

CSS rem()函数需要2个参数:https://developer.mozilla.org/en-US/docs/Web/CSS/rem
rem()CSS函数返回第一个参数除以第二个参数后的余数,类似于JavaScript余数运算符(%)
如果你创建了一个自定义的rem()函数,我建议用别的名字命名,因为这样可能会有冲突。

fkvaft9z

fkvaft9z3#

css更新到1.65.0版后,出现了保留的calc函数。这些函数调用将被分析为sass计算而不是函数调用:round(),mod(),rem(),sin(),cos(),tan(),asin(),acos(),atan(),atan2(),pow(),sqrt(),hypot(),log(),exp(),abs()或sign()。以它们中任何一个命名的用户定义函数在没有命名空间的情况下不能再调用。
正如你所看到的,rem()不再是一个自定义函数。更改它的名称,一切都将像以前一样工作。
enter link description here

kgqe7b3p

kgqe7b3p4#

在CSS的最新迭代中,rem()被用于计算递归。
Sass 1.64.2及更高版本的更新版本现在将rem()视为CSS函数而不是自定义函数,如果您尝试构建项目,则会抛出上述错误。
在本例中,我们使用的是sass-rem包,它定义了一个自定义的rem函数。
使用库的v4并将SCSS模板中rem(...)的用法替换为rem-convert(...),解决了自定义函数与新CSS rem()函数重叠的问题。

相关问题