【问题标题】:Bower not finding a package in Angular on Rails appBower 在 Angular on Rails 应用程序中找不到包
【发布时间】:2016-07-24 16:31:18
【问题描述】:

我正在关注 Thinkster 关于 Angular on Rails 的教程 (https://thinkster.io/angular-rails#jumping-in-with-angular)。 在本教程中,我按照以下方式安装前端依赖项:

bower install angular angular-ui-router bootstrap --save

然后我需要在application.css 中通过以下方式引导:

 *= require bootstrap/dist/css/bootstrap
 *= require_tree .
 *= require_self

这里是application.js 文件:

//= require angular
//= require angular-rails-templates
//= require angular-ui-router
//= require_tree .

当我运行 rails 服务器时出现以下错误,

1. couldn't find file 'bootstrap/dist/css/bootstrap' with type 'text/css'
2. couldn't find file 'angular' with type 'application/javascript'

这里是.bowerrc 文件:

{
  "directory":"vendor/assets/bower_components"
}

这是我从 Rails 服务器控制台收到的错误:

ActionView::Template::Error (couldn't find file 'bootstrap/dist/css/bootstrap' with type 'text/css'):
    2: <html>
    3: <head>
    4:   <title>FlapperNews</title>
    5:  <%= stylesheet_link_tag    'application', media: 'all' %>
    6:   <%= javascript_include_tag 'application' %>
    7:   <%= csrf_meta_tags %>
    8: </head>
  app/assets/stylesheets/application.css:14
  app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb___1398966333390810206_70171728569860'

我确认在 Rails 应用程序中正确安装了 bootstrap 和 angular。

但似乎在应用程序中找不到它。可能是什么问题?

【问题讨论】:

  • 我也被困在这一点上。你有想过吗?
  • 我刚刚想通了。我实际上有一个错字。如果您想查看代码,我可以将我的代码提交给一个仓库,看看是否有什么不同。

标签: ruby-on-rails angularjs ruby bower


【解决方案1】:

也许您想使用 bower-rails (https://github.com/rharriso/bower-rails),它可以帮助您管理 Rails 应用程序中的前端依赖项。然后,您可以将您的依赖项添加到您的 Bowerfile 和 rake bower:install,这会将您的依赖项安装到 /vendor/assets/bower_components,因此现在您可以在 application.css 或 application.js 文件中使用它们。

我认为在 Rails 应用程序的根路径中有一个 bower_components 文件夹不是要走的路,因为它的内容对 Asset Pipeline 不可见(更多信息。这里:http://guides.rubyonrails.org/asset_pipeline.html

【讨论】:

  • 我正在关注的教程是说使用这种方式而不是安装 bower-rails,原因如下:如果您更喜欢类似于 Gemfile 的语法而不是 bower,那么还有一个 bower-rails gem .json 和包装 bower 命令的 rake 任务,但是,这将是 Gemfile 中的另一个依赖项,并且还需要通过 npm 安装 Bower。这有意义还是没关系?
  • 如果您不想安装额外的依赖项,您应该将 bower_components 文件夹添加到路径中。例如:*= 需要 bower_components/bootstrap/dist/css/bootstrap。让我知道这是否有效
  • 或者像这样在config/application.rb中添加bower_components路径:config.assets.paths
  • 我确实按照你告诉我的去做了,但我得到了基本相同的错误“找不到类型为 'text/css' 的文件 'bower_components/bootstrap/dist/css/bootstrap'”。我应该把这个放在application.css 对吧?
  • config.assets.paths &lt;&lt; Rails.root.join("vendor", "bower_components") 运气不好
【解决方案2】:

使用 config.assets.paths &lt;&lt; Rails.root.join('vendor', 'assets', 'components') 在 app.config 中。

确保 .bowerrc 也设置了这个

{
  "directory": "vendor/assets/components"
}

也遇到了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-22
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多