我在生成项目时遇到以下错误
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"
}
}
型
问题出在哪里?
4条答案
按热度按时间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的答案。
axzmvihb2#
CSS
rem()
函数需要2个参数:https://developer.mozilla.org/en-US/docs/Web/CSS/remrem()CSS函数返回第一个参数除以第二个参数后的余数,类似于JavaScript余数运算符(%)
如果你创建了一个自定义的
rem()
函数,我建议用别的名字命名,因为这样可能会有冲突。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
kgqe7b3p4#
在CSS的最新迭代中,
rem()
被用于计算递归。Sass 1.64.2及更高版本的更新版本现在将
rem()
视为CSS函数而不是自定义函数,如果您尝试构建项目,则会抛出上述错误。在本例中,我们使用的是
sass-rem
包,它定义了一个自定义的rem
函数。使用库的v4并将SCSS模板中
rem(...)
的用法替换为rem-convert(...)
,解决了自定义函数与新CSSrem()
函数重叠的问题。