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

时间:2015-11-09 15:22:22

标签: gruntjs libsass node-sass

最近版本的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.

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

我无法确定针对此错误的修复程序 - 我也无法找到任何文档来解决node-sass中导致此问题的更改。我们有太多文件可以重命名每次导入。

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

编辑:

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

2 个答案:

答案 0 :(得分: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

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

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

"node-sass": "^3.4.1"

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

"node-sass": "3.4.1"

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

答案 1 :(得分:7)

选项1

您可以使用文件扩展名

导入
@import "../file.scss"

选项2

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

这样可以像这样导入

@import "../file"

我更喜欢选项2,因为它减少了您必须跟踪的css个文件的数量。