Webpacker,Yarn和capistrano,fsevents @ 1.1.1错误

时间:2017-06-02 23:52:18

标签: ruby capistrano3 yarnpkg fsevents ruby-on-rails-5.1

我有一个项目,我最近从rails 5.0迁移到rails 5.1,在此之前我安装了webpacker并使用capistrano进行部署,在rails 5.0中一切正常,但是当我做了更改时,现在capistrano无法完成资产:预编译任务,我收到此错误:

**部署失败 **有关详细信息,请参阅log / capistrano.log。这是最后20行: ..... DEBUG [04ae7a64]命令:cd / home / deploy / my-site / releases / 20170602233846&& (导出RAILS_ENV =“staging”;〜/ .rvm / bin / rvm默​​认执行bundle exec rake assets:precompile)

DEBUG [04ae7a64]纱线安装v0.24.5

DEBUG [04ae7a64] [1/4]解决方案......

DEBUG [04ae7a64] [2/4]获取包......

DEBUG [04ae7a64]警告fsevents@1.1.1:平台“linux”与此模块不兼容。

DEBUG [04ae7a64] info“fsevents@1.1.1”是可选的依赖项和兼容性检查失败。将其从安装中排除。

DEBUG [04ae7a64] [3/4]链接依赖关系...

DEBUG [04ae7a64] [4/4]建立新包装......

DEBUG [04ae7a64]于9.29s完成。

我正在使用带有ubuntu的本地计算机,并且ubuntu也安装在服务器中。

我不知道fsevents@1.1.1作为依赖项需要在哪里,但是我从2天前就无法进行部署,而且我还没有找到解决方案。

1 个答案:

答案 0 :(得分:2)

编辑:我认为原来的Webpacker安装肯定是出错了。使用webpacker的主分支并重新运行bundle exec rake webpacker:install已解决此问题。

原始答案: 我今天遇到了同样的错误。我认为./bin/yarn install --no-progress这是Rails rake任务自然运行的,必须返回一个非零退出代码。

首先,我尝试重写yarn:install rake任务以添加--ignore-optional,但这不起作用。

我通过添加包含:

的rake任务lib/tasks/yarn.rake让我的部署成功
namespace :yarn do
  desc "Install all JavaScript dependencies as specified via Yarn"
  task :install do
    puts "Ignoring yarn install failure"

    begin
      system "./bin/yarn install --no-progress --ignore-optional; true"
    rescue
      exit(true)
    end

    exit(true)
  end
end

task(:default).clear.enhance(['yarn:install'])

# Run Yarn prior to Sprockets assets precompilation, so dependencies are available for use.
if Rake::Task.task_defined?("assets:precompile")
  Rake::Task["assets:precompile"].enhance [ "yarn:install" ]
end

这取代了Rails的默认纱线安装rake任务,几乎可以确保Capistrano不会捕获任何错误。这不是一个好的解决方案,但至少它可以使部署成功。希望合法的纱线安装错误会导致资产构建后期出现另一个错误。