我正在使用rails 5.0.3
我已经在应用程序的根目录中为这个项目添加了npm。
为了将node_modules加载到资产管道中,我已将以下行添加到config / initializers / assets.rb
Rails.application.config.assets.paths << Rails.root.join('node_modules')
然后我在我的application.js清单文件中包含了角度,如下所示:
//= 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
为什么我要在掌握之前预先编译这些资产?如何将此部分作为默认流程?
答案 0 :(得分:1)
我们解决这个问题的方法是安装webpacker gem并运行rails webpacker:install