Heroku 在 uglifier 上构建失败

Posted

技术标签:

【中文标题】Heroku 在 uglifier 上构建失败【英文标题】:Heroku build fails on uglifier 【发布时间】:2015-02-23 22:01:33 【问题描述】:

我的最小应用程序在本地运行,并且没有捆绑错误。但是,当我推送到 heroku 时,在 assets:precompile 步骤中构建失败:

...
Bundle completed (3.24s)
Cleaning up the bundler cache.
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompole
rake aborted!
LoadError: cannot load such file -- uglifier
(in /tmp/build_.../app/assets/javascripts/application.js)

注意事项:1.我没有在本地使用 uglifier gem2.我没有文件应用程序/资产/javascripts/application.js

我尝试了以下 Gemfile 解决方案:A) 添加 uglifier gemB) 将 uglifier 添加到资产组 C) 从 Gemfile 中完全删除 uglifier 并 rake 卸载所有版本

接下来是什么?

【问题讨论】:

您根本不想使用资产管道? 检查浏览器控制台上是否有 javascript 错误。在本地机器上尝试预编译。 预编译在本地工作,但 pg_ext 除外,这似乎是与 uglifier 不同的问题。我不明白的是为什么 uglifier 被引用,因为我从 Gemfile 中删除了它并卸载了所有版本?? 【参考方案1】:

在 config/environments/production.rb 中注释这一行

config.assets.js_compressor = :uglifier

【讨论】:

下次推送前别忘了提交! :-)【参考方案2】:

如果您想压缩资产,更好的解决方案是将uglifier 添加到您的 GEMFILE:

gem 'uglifier'

【讨论】:

【参考方案3】:

如果您有兴趣继续使用 uglifier,可以将其添加到您的 Gemfile(并使用 Bundler 安装)——正如 @mindtonic 所解释的那样。

另外,如果您使用的是 ES6,则需要切换:

config.assets.js_compressor = :uglifier

到:

config.assets.js_compressor = Uglifier.new(harmony: true)

如https://github.com/lautis/uglifier/issues/127中所述

【讨论】:

【参考方案4】:

你必须关注两点:

第 1 点。 Gem 版本:应该是 4.2

gem 'uglifier', '~> 4.2'

第 2 点。现在使用 js 压缩器

config.assets.js_compressor = Uglifier.new(harmony: true)

【讨论】:

以上是关于Heroku 在 uglifier 上构建失败的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 机器人的 Heroku 构建失败

我的 Heroku 构建一直失败,我不知道为啥

尝试将带有顺风的 MERN 堆栈部署到 Heroku 时构建失败

heroku 中的 vue-cli-service 构建失败

由于 Yarn 和 npm 锁定文件冲突,Heroku 构建失败

Heroku 构建失败:“node_modules 已签入源代码管理”