即使将node_modules添加到资产路径

时间:2017-06-15 01:55:13

标签: ruby-on-rails ruby ruby-on-rails-4 sprockets

我正在使用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

为什么我要在掌握之前预先编译这些资产?如何将此部分作为默认流程?

1 个答案:

答案 0 :(得分:1)

我们解决这个问题的方法是安装webpacker gem并运行rails webpacker:install