如何解决 node-sass 回归(?)"It's not clear which file to import for @import"

How to address node-sass regression(?) "It's not clear which file to import for @import"

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)的文件也会发生这种情况。似乎没有意识到这些文件是部分文件。

选项 1

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

@import "../file.scss"

选项 2

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

这会让你像这样导入

@import "../file"

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

我遇到了同样的问题,但仅限于 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,那么请在上面的说明中使用该版本。