Sass: errno::enoent: 没有这个文件或目录。

7

我知道这是一个非常平淡的错误,但在Sass 3.4.2中我遇到了一个常规的“文件未找到”错误:

/*
Errno::ENOENT: No such file or directory - dumdum.scss

Backtrace:
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/plugin/compiler.rb:482:in `read'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/plugin/compiler.rb:482:in `update_stylesheet'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/plugin/compiler.rb:209:in `each'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/plugin/compiler.rb:293:in `watch'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/plugin.rb:108:in `method_missing'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/exec/sass_scss.rb:381:in `watch_or_update'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/exec/sass_scss.rb:51:in `process_result'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/exec/base.rb:52:in `parse'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/lib/sass/exec/base.rb:19:in `parse!'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.12/bin/sass:13:in `<top (required)>'
/usr/bin/sass:23:in `load'
/usr/bin/sass:23:in `<main>'
*/

我以前就遇到过这个问题,但是我在诊断/解决方面毫无进展。它还显示为页面中的奇怪元素。

能否有人帮我理解下追踪回溯?我相信这是非常简单的事情,但我对Ruby知之甚少。我已尝试删除/重新安装Sass。


以下回答中是否有解决了您的问题?如果是,请点赞并接受它们(勾选)。否则,请提供更多细节或提交您自己发现的解决方案。 - onebree
1
谢谢你提醒我,Hunter。 - mattpolicastro
4个回答

4

我在我的项目中遇到了类似的错误,删除项目根目录下的sass-cache文件夹,然后再次运行sass/grunt就解决了我的问题...

rm .sass-cache/ -R

希望这能有所帮助。

这真是太有道理了。我完全忘记了Sass会在命令运行的目录中缓存文件,而不是样式表存储的目录中。下次遇到这个错误时,我一定要试一试。 - mattpolicastro

2
无论是Ruby还是Rails,你的回溯信息意味着错误源自于gem本身的代码。如果你打开这些文件并跟踪回溯信息,你就可以看到sass gem是如何工作的。
编辑:如果你手动安装或卸载了一个gem,最好运行bundle install以便正确匹配Gemfile.lock中的规格。如果你对这样的文件感到陌生,我强烈建议阅读gem管理器http://bundler.io/,它可以让你控制哪些gems/版本需要你的应用程序!
注意:如果你正在使用Rails,下面的回答可能会有所帮助。(基于我几个月前的个人经验。)
这个错误意味着你的目录中没有 dumdum.scss 这个文件,很可能在 app/assets/stylesheets/ 目录下。我建议你快速使用 grep 搜索一下你使用了 dumdum 的地方。例如,在我正在处理的应用程序中,我有一个名为 _colors.scss 的文件,并且它被引用并覆盖了样式表(用于 Bootstrap):@import "colors";

很奇怪 - 所有文件都在正确的位置。在 app/client/stylesheets 中有 sasscss 子目录,包含所有要导入的部分和主文件,并且我正在使用 sass --watch sass:css 命令从该 stylesheets 目录进行处理。将项目移动到另一台安装了 Sass 的新机器上,似乎又可以正常工作了。 - mattpolicastro
我在回答中加入了一些关于gems的帮助。希望能对你有所帮助。看起来你的问题是由于存在非原始版本的gem造成的。针对你的评论,gem pristine [GEMNAME] - onebree
谢谢,onebree。我通常只使用gem来进行项目样式的处理,但我会看一下bundler来进行包管理。 - mattpolicastro
1
我有帮助到您回答您的问题吗?您在进行干净安装时遇到了问题吗?另外,我可以补充一下,bundler 用于 gem 依赖管理,而不是通用软件包。自 Rails 4 起尤其好用,因为它不再使用插件(vendor/plugins)。 - onebree
1
不,干净安装似乎解决了问题。我主要使用JavaScript/Node软件包,只在Sass框架中使用Ruby。话虽如此,我使用多个软件包,并经常遇到问题,因此任何能帮助保持一致性的东西对我来说听起来都很好。 - mattpolicastro

0
我解决了这个错误:
通过将项目目录中的Sass移动到Ruby文件夹中。
PS C:\Ruby26-x64\Sass> sass --watch scss:css
>>> Sass is watching for changes. Press Ctrl-C to stop.
>>> Change detected to: scss/style.scss
      write css/style.css
      write css/style.css.map

0

我曾经遇到过类似的问题,但是之前提到的解决方案并没有解决我的问题,所以我只能采用一种试错的方法。

在尝试我的 hack and hope 方法之前,我尝试了以下几种方法:

  1. 删除所有可能包含我的 sass 文件的 .sass-cache 文件夹
  2. 卸载并重新安装 sass gem
  3. 升级 Ruby 和 Sass。由于某些原因,我无法干净地卸载 ruby 命令提示符。所以我仍然使用 ruby 2.3.3p222 和 Sass 版本 3.4.23

所以我的解决方案是使用sassmeister来转换 scss 文件,这解决了我的问题。为了压缩 css 文件,我使用了CSS Compressor。如果您的 ruby/sass 安装不够干净,这种方法非常有效。

  1. 接下来,将压缩的CSS文件保存为一个新的CSS文件并使用新的文件名。
  2. 然后,进入您的HTML/PHP文件,并在其中更改CSS文件名为步骤1中的新CSS文件名。
  3. 这样应该就可以了。对我来说有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接