【问题标题】:Sprockets can't find angular.js even after adding node_modules to asset path即使将 node_modules 添加到资产路径后,Sprockets 也找不到 angular.js
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 2015-01-23
    • 2018-05-23
    • 2016-08-10
    • 2018-07-15
    • 1970-01-01
    • 2013-02-27
    • 2019-10-11
    相关资源
    最近更新 更多