如何解决node-sass回归(?)"不清楚为@import导入哪个文件"

Bry*_*ner 5 gruntjs node-sass libsass

似乎最新版本的node-sass(3.4.1)打破了我们的构建.我一直收到此错误消息:

It's not clear which file to import for '@import "../file"'.
Candidates:
     ../file.scss
     ../file.css
Please delete or rename all but one of these files.
Run Code Online (Sandbox Code Playgroud)

现在,对于项目中未明确指定名称中的"file.scss"的所有文件,都会出现这种情况.

我无法确定这个错误的修复程序 - 我也找不到任何文档来解决node-sass导致它的变化.我们有太多文件可以重命名每个导入.

有人能指出我正确的方向吗?

编辑:

对于_file在其路径中具有下划线(例如.)的文件也会发生这种情况.似乎没有认识到这些文件是偏僻的.

Dan*_*isp 8

我有同样的问题,但只有node-sass版本3.4.2.版本3.4.1对我来说没问题.

这似乎是一个已知的问题node-sass- https://github.com/sass/node-sass/issues/1222但不清楚究竟哪些版本受到影响.

我通过卸载修复它grunt-sass,然后安装正确版本node-sass(v3.4.1),然后最终重新安装grunt-sass.

$ npm uninstall grunt-sass
$ npm install node-sass@3.4.1 --save-dev
$ npm install grunt-sass
Run Code Online (Sandbox Code Playgroud)

这意味着grunt-sass使用您安装的版本,而不是安装自己定义的版本"node-sass": "^3.4.0"

很奇怪即使我在安装命令中指定了一个确切的版本,我仍然在我的package.json中得到了这个:

"node-sass": "^3.4.1"
Run Code Online (Sandbox Code Playgroud)

所以我手动将其更改为确切版本,以便团队中的其他开发人员获得正确的版本:

"node-sass": "3.4.1"
Run Code Online (Sandbox Code Playgroud)

当然,如果您发现唯一适合您的版本是v3.3.0,那么请在上面的说明中使用该版本.


Rea*_*lar 7

选项1

您可以使用文件扩展名导入

@import "../file.scss"
Run Code Online (Sandbox Code Playgroud)

选项2

或者您可以告诉SASS不要.css通过导入生成文件而不输出.您必须将文件重命名file.scss_file.scss

这将让你像这样导入

@import "../file"
Run Code Online (Sandbox Code Playgroud)

我更喜欢选项2,因为它减少了css你需要跟踪的文件数量.