use*_*401 9 sass node.js npm compass-sass npm-install
在我的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
Run Code Online (Sandbox Code Playgroud)
我重新安装了compass-mixins包但它仍然给出了相同的错误.然后我看了_lists.scss那个文件在81行有一个代码.我删除了它给它同样的错误.我该怎么办?
@if not(function-exists(compact)) {
@function compact($vars...) {
$list: ();
@each $var in $vars {
@if $var {
$list: append($list, $var, comma);
}
}
@return $list;
}
}
Run Code Online (Sandbox Code Playgroud)
我也面临类似的问题.我的项目是使用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更改之一与此问题有关:
'禁止在控制指令或mixins(@ mgreter,#1550)中定义函数'
显然,指南针混合中的 _lists.scss 打破了这个规则.似乎有人向罗盘混音师提出了一个问题,他们有解决问题的想法.
在compass-mixins发布问题修复版之前,我的临时解决方法是手动删除node_modules/node-sass并且npm install node-sass@3.4.2
我正在使用 Gulp。gulp-sass 2.3.0 版本打破了它。返回到 2.2.0 版本,一切就都解决了。
编辑:
真正的罪魁祸首是“gulp-sass”节点模块内的节点模块,称为“node-sass”。您可以在“gulp-sass”的 package.json 文件中看到它只是拉取大于 ^3.5.3 的版本。
即使您返回并将“gulp-sass”重新安装到 2.2.0,正如我之前建议的那样,其中的 package.json 文件仍然会拉取大于 ^3.5.3 的“node-sass”。
如果我使用旧版本的“node-sass”3.4.2,该错误就会消失。我不知道如何以自动方式解决这个问题。在紧要关头,我能够通过从另一个有效的项目复制该文件夹(即使用 3.4.2)来解决问题。现在它可以编译了。
比我聪明的人能想出更好的方法来实现这个结果吗?
| 归档时间: |
|
| 查看次数: |
5193 次 |
| 最近记录: |