【发布时间】:2017-07-06 23:52:56
【问题描述】:
我正在使用 Rails 5.0.3
我已将 npm 添加到该项目的应用程序根目录中。
为了将 node_modules 加载到资产管道中,我在 config/initializers/assets.rb 中添加了以下行
Rails.application.config.assets.paths << Rails.root.join('node_modules')
然后我在我的 application.js 清单文件中包含了 angular,如下所示:
//= require angular/angular.js
//= require app.js
//= require_tree ./ng/constants
//= require_tree ./ng/services
//= require_tree ./ng/controllers
我尝试了多种变体,例如:
require_directory angular
require_tree angular
require angular/angular.js
require angular
这在本地工作,但是当我推送到 heroku 时,它说:
Sprockets::FileNotFound: couldn't find file 'angular/angular.js' with type 'application/javascript'
...... [lists all the asset paths Sprockets has searched including node_modules]
/tmp/build_93a7b2eb7cc158c5d30b242da36b56ac/node_modules
应用程序在 Heroku 中加载资产以进行生产时似乎发生了一些事情,而不是在本地开发中运行时发生了一些事情,但这是什么?
我还尝试通过在 config/initializers/assets.rb 中包含这一行来预编译清单文件中的所有内容
Rails.application.config.assets.precompile += %w( application.js )
这在 Heroku 中用于生产的方式是首先做:
rake assets:precompile
为什么我必须在推送到 master 之前预编译这些资产?如何使这部分成为默认流程?
【问题讨论】:
-
你能找出原因吗?
-
我还没找到原因。我刚刚继续手动预编译资产。 @cavneb
标签: ruby-on-rails ruby ruby-on-rails-4 sprockets