导入的文件未找到或无法读取:compass。

47

我成功安装了Sass,但是在导入Compass时遇到了问题。

以下是错误详情:

*Syntax error: File to import not found or unreadable: compass.
              Load path: H:/HTML/___keoFull/sass
.....
Backtrace:
mainKeo.scss:2
style.scss:2
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/import_node.rb:67:in `rescue in import'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/import_node.rb:45:in `import'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/import_node.rb:28:in `imported_file'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/import_node.rb:37:in `css_import?'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:217:in `visit_import'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/base.rb:37:in `visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:100:in `visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:227:in `block in visit_import'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:227:in `map'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:227:in `visit_import'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/base.rb:37:in `visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:100:in `visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/base.rb:53:in `map'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/base.rb:53:in `visit_children'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:121:in `with_environment'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:108:in `visit_children'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/base.rb:37:in `block in visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:128:in `visit_root'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/base.rb:37:in `visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:100:in `visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/visitors/perform.rb:7:in `visit'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/tree/root_node.rb:20:in `render'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/engine.rb:315:in `_render'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/engine.rb:262:in `render'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/plugin/compiler.rb:341:in `update_stylesheet'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/plugin/compiler.rb:203:in `block in update_stylesheets'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/plugin/compiler.rb:201:in `each'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/plugin/compiler.rb:201:in `update_stylesheets'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/plugin/compiler.rb:235:in `watch'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/plugin.rb:107:in `method_missing'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/exec.rb:444:in `watch_or_update'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/exec.rb:307:in `process_result'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/exec.rb:41:in `parse'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/lib/sass/exec.rb:21:in `parse!'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/sass-3.2.6/bin/sass:9:in `<top (required)>'*

19
为什么您取消了我明确的答案,而选择了一个没有新内容的简短答案? - Andrey Mikhaylov - lolmaus
我想我在第一次尝试时只是接受了对我有用的任何东西,哈哈。你的答案很棒,为了其他访问这个问题的人,我会接受你的答案。干得好! - Keo Strife
5个回答

121

Compass可以调整导入partials的方式。它允许根据组件名称导入组件,而无需指定路径。

在执行@import 'compass';之前,您需要:

安装Compass作为一个Ruby gem:

gem install compass

接下来,您应该使用Compass自己的命令行工具来编译您的SASS代码:

cd path/to/your/project/
compass compile

需要注意的是,Compass需要一个名为config.rb的配置文件。你需要创建它以使Compass正常工作。

最简单的config.rb可以像这样简单:

css_dir =   "css"
sass_dir =  "sass"

你的SASS代码应该存放在 sass/ 目录下。

如果不想手动创建配置文件,可以使用 compass create <project-name> 创建一个空的Compass项目,并将 SASS 代码复制到其中。

请注意,如果要使用 Compass 扩展功能,需要:

  1. config.rb 中引入它们;
  2. 从你的 SASS 文件中导入它们。

更多信息请查看这里:http://compass-style.org/help/


1
+1 很棒的答案;我的问题是我没有在 config.rb 中要求它们。 - Chris Rockwell
4
请注意,如果您没有注意到,这个问题和答案并不适用于Rails。 - Joshua Kolden
1
同意,这个回答比被采纳的回答更有帮助。config.rb是关键。 - Chris Wade
config.rb 文件应该存放在哪里? - therobyouknow
@therobyouknow,通常在项目的根目录中。但是您可以将其放置在任何位置:只需从那里运行compass命令行工具并提供相对于该文件夹的路径即可。 - Andrey Mikhaylov - lolmaus
显示剩余2条评论

16

我在使用Rails 4.0.2和compass-rails 1.1.3时遇到了这个问题。

通过将Gemfile中的gem 'compass-rails'移出:assets组,我解决了这个错误。

大概长成这个样子:

# stuff
gem 'compass-rails', '~> 1.1.3'
group :assets do
  # more stuff
end

1
我也遇到了同样的问题。原来是因为资产组在Rails 4中已被弃用。 - KaptajnKold
我之前是这样的,但不得不重新启动服务器 ^^) - MMachinegun

3
如果您跟我一样,正在寻找一种使sass --watch与compass兼容的方法,那么答案就是使用Compass的版本的watch,只需简单执行以下命令即可:
compass watch

如果你正在使用Mac并且还没有安装gem,那么当你尝试安装Compass gem时可能会遇到错误,这是由于OSX 10.11之后的版本出现了权限问题。使用Homebrew安装ruby可以解决这个问题。请参考这个答案来完成安装过程。
或者你也可以使用CodeKit,但如果你像我一样固执地想使用Sublime Text和命令行,那么这就是正确的方法。

3
我卸载了 Compass 1.0.1 并安装了 Compass 0.12.7,这解决了我的问题。
$ sudo gem uninstall compass
$ sudo gem install compass -v 0.12.7

2
简而言之,如果您已经安装了gem,请运行以下命令:
compass compile

在你的Rails根目录下


你每次开始工作时都需要这样做吗? - Daniel Ramirez-Escudero
@DanielRamirez-Escudero 每次修改 SCSS 文件后,您都需要编译。 - Paul

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