找不到或无法读取要导入的文件:指南针

Posted

技术标签:

【中文标题】找不到或无法读取要导入的文件:指南针【英文标题】:File to import not found or unreadable: compass 【发布时间】:2013-03-08 20:36:05 【问题描述】:

我成功安装了 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)>'*

【问题讨论】:

您为什么不接受我的明确回答而选择一个没有任何新内容的简短回答? 我想我在第一次尝试时接受了任何对我有用的东西,哈哈。你的回答很好,为了其他访问这个问题的人,我会接受你的。 GJ 【参考方案1】:

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

在你可以做@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 &lt;project-name&gt; 创建一个空的 Compass 项目,然后将您的 SASS 代码复制到其中,而不是手动创建配置文件。

请注意,如果您想使用 Compass 扩展程序,您必须:

    config.rb 要求他们; 从您的 SASS 文件中导入它们。

更多信息在这里:http://compass-style.org/help/

【讨论】:

+1 好答案;我的问题是我在config.rb 中不需要它们 以防万一您没有注意到。这个问题和答案不适用于 Rails。 非常感谢,这是我用 laravel 安装 compass/sass 的点睛之笔 同意,这个答案比接受的答案更有帮助。 config.rb 是关键。 config.rb 文件应该/应该放在哪里?【参考方案2】:

我在使用 Rails 4.0.2 和 compass-rails 1.1.3 时发现了这个问题

我通过将gem 'compass-rails' 移出Gemfile 中的:assets 组来解决此错误

看起来像这样:

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

【讨论】:

我也有同样的经历。原来是因为资产组从 Rails 4 开始被弃用。 我有这样的,但不得不重新启动服务器^^)【参考方案3】:

我卸载了 compass 1.0.1 并安装了 compass 0.12.7,这为我解决了问题

$ sudo gem uninstall compass
$ sudo gem install compass -v 0.12.7

【讨论】:

【参考方案4】:

如果你像我一样来这里寻找一种方法来让 sass --watch 与 compass 一起工作,答案是使用 Compass 的 watch 版本,简单地说:

compass watch

如果您使用的是 Mac 并且尚未安装 gem,那么您在尝试安装 Compass gem 时可能会遇到错误,因为 OSX 版本高于 10.11 会出现权限问题。用 Homebrew 安装 ruby​​ 来解决这个问题。见this answer for how to do that.

您也可以只使用 CodeKit,但如果您像我一样固执并想使用 Sublime Text 和命令行,那么这就是要走的路。

【讨论】:

【参考方案5】:

简而言之,如果您已安装 gem,则运行:

compass compile

在您的 Rails 根目录中

【讨论】:

每次开始做项目时都需要这样做吗? @DanielRamirez-Escudero 每次更改 SCSS 文件时都会编译

以上是关于找不到或无法读取要导入的文件:指南针的主要内容,如果未能解决你的问题,请参考以下文章

错误:找不到要导入的文件或无法读取:fancy-buttons

找不到或无法读取要导入的 Angular CLI SCSS 文件

错误:找不到要导入的文件或无法读取:引导电子邮件

错误:找不到要导入的文件或无法读取:~bootstrap/scss/bootstrap

webpack 错误:找不到要导入的文件或无法读取:波旁威士忌,如何解决?

如何解决(插件 postcss)错误:找不到或无法读取要导入的文件:smui-theme. Material UI Svelte 项目