在我的nodeJS项目中突然出现错误。我没有任何升级或更改。 当我在命令行中编写NPM启动时,它会给出错误
ERROR in ./~/css-loader?sourceMap!./~/postcss-loader!./~/sass-loader?
sourceMap&outputStyle=expanded&includePaths[]=c:/TFS/rc1/app/scss&includePaths[]
=c:/TFS/rc1/~/compass-mixins/lib&sourceMap&sourceMapContents=true!./app/scss/_toolkit.scss
Module build failed:
undefined
^
Functions may not be defined within control directives or other mixins.
in c:\TFS\rc1\node_modules\compass-mixins\lib\compass\functions\_lists.scss (line 81, column 3)
@ ./app/scss/_toolkit.scss 4:14-337
我重新安装了compass-mixins软件包但它仍然给出了同样的错误。然后我在81行看了_lists.scss那个文件有一个代码。我删除了它给出了同样的错误。我该怎么办?
@if not(function-exists(compact)) {
@function compact($vars...) {
$list: ();
@each $var in $vars {
@if $var {
$list: append($list, $var, comma);
}
}
@return $list;
}
}
答案 0 :(得分:6)
我也面临类似的问题。我的项目正在使用gulp-sass和compass-mixins。正如heart.cooks.mind指出的那样,gulp-sass取决于node-sass。 node-sass libsass libsass 3.3.3 Delorean之后node-sass 3.5.1将其中一个依赖libsass 3.3.3 Delorean升级为版本'Disallow functions to be defined in control directives or mixins (@mgreter, #1550)'。
但是,compass-mixins之一的更改与此问题有关:
issue
显然,compass-mixins中的_lists.scss违反了这条规则。似乎有人将compass-mixins提升为{{3}},他们有解决问题的想法。
在{{3}}发布问题修复版之前,我的临时解决方法是手动删除node_modules / node-sass,npm install node-sass@3.4.2
答案 1 :(得分:2)
我遇到了同样的问题,请参考node sass release 3.5.3 is breaking build并使用shrinkwrap强制锁定gulp-sass以使用特定节点sass库,并避免使用节点sass的错误版本
答案 2 :(得分:1)
我正在使用Gulp。版本2.3.0的gulp-sass打破了它。回到2.2.0版,你们都修好了。
编辑:
真正的罪魁祸首是" gulp-sass"中的节点模块。节点模块称为" node-sass"。您可以看到内部" gulp-sass"的package.json文件,它只是拉大于^ 3.5.3的版本。
即使你回去重新安装" gulp-sass"到2.2.0,正如我之前建议的那样,那里的package.json文件仍然会拉出" node-sass"大于^ 3.5.3。
如果我使用旧版本的&#34; node-sass&#34; 3.4.2错误消失了。我不知道如何以自动方式解决这个问题。在紧要关头,我能够通过从一个有效的不同项目中复制该文件夹(即使用3.4.2)来解决问题。现在它编译。</ p>
比我聪明的人能找到更好的方法来实现这个结果吗?
答案 3 :(得分:1)
我(暂时)做的是全局安装node-sass v3.4.2,然后用这个旧版本替换gulp-sass版本的node-sass(它位于gulp-sass / node_modules中)。
sudo npm install -g node-sass@3.4.2;
sudo cp -r /usr/lib/node_modules/node-sass/ /usr/lib/node_modules/gulp-sass/node_modules/;
答案 4 :(得分:1)
顺便说一句,这里有一个PR waiting to be merged。但如果你今天想要使用它,那么a fork of the merge也是如此
如果你想使用后者,那么只需将compass-mixins: tjenkinson/compass-mixins
放在package.json
中,一切都会好的。
更新: - 还有PR现在提到的后者的npm包
更新2: - 现在不再是v0.12.8的问题