运行 hotwire:install 后,无法推送到 Heroku

问题描述

所以我构建了一个基本的应用程序,然后我准备测试一个“生产”原型,它不会推送到 Heroku。不过它在本地运行良好。所以我完成了这些步骤,在每一步之后,在不同的目录中推送一个 git,发现是在我运行 hotwire:install 之后它失败了。

步骤:

Ruby version: 3.0.0
Rails Version 6.1.1

rails new yourapp -d Postgresql
cd yourapp
git add .
git commit -m "initial"
Heroku create yourapp
git push Heroku master
(you may need to run bundle lock to add linux support then another commit)
--push was successful

bundle add hotwire-rails
git add .
git commit -m "added hotwire gem"
git push Heroku master
--push was successful

rails hotwire:install
bundle install
git add .
git commit -m "ran hotwire install"
git push Heroku master
--push rejected.  See output below.


patrick@Patricks-MBP chatapp2 % git push heroku master
Enumerating objects: 28,done.
Counting objects: 100% (28/28),done.
Delta compression using up to 12 threads
Compressing objects: 100% (15/15),done.
Writing objects: 100% (17/17),2.60 KiB | 532.00 KiB/s,done.
Total 17 (delta 11),reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Building on the Heroku-20 stack
remote: -----> Ruby app detected
remote: -----> Installing bundler 2.1.4
remote: -----> Removing BUNDLED WITH version in the Gemfile.lock
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-3.0.0
remote: -----> Installing dependencies using bundler 2.1.4
remote:        Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
remote:        Fetching gem Metadata from https://rubygems.org/............
remote:        Using rake 13.0.3
remote:        Using concurrent-ruby 1.1.8
remote:        Using minitest 5.14.3
remote:        Using zeitwerk 2.4.2
remote:        Using builder 3.2.4
remote:        Using erubi 1.10.0
remote:        Using racc 1.5.2
remote:        Using crass 1.0.6
remote:        Using rack 2.2.3
remote:        Using nio4r 2.5.4
remote:        Using websocket-extensions 0.1.5
remote:        Using mimemagic 0.3.5
remote:        Using mini_mime 1.0.2
remote:        Using msgpack 1.3.3
remote:        Using bundler 2.2.3
remote:        Using ffi 1.14.2
remote:        Using method_source 1.0.0
remote:        Using thor 1.1.0
remote:        Using pg 1.2.3
remote:        Fetching redis 4.2.5
remote:        Using tilt 2.0.10
remote:        Using i18n 1.8.7
remote:        Using semantic_range 2.3.1
remote:        Using tzinfo 2.0.4
remote:        Using marcel 0.3.3
remote:        Using mail 2.7.1
remote:        Using bootsnap 1.5.1
remote:        Using puma 5.1.1
remote:        Using sassc 2.4.0
remote:        Using nokogiri 1.11.1 (x86_64-linux)
remote:        Using rack-test 1.1.0
remote:        Using websocket-driver 0.7.3
remote:        Using sprockets 4.0.2
remote:        Using rack-proxy 0.6.5
remote:        Using activesupport 6.1.1
remote:        Using loofah 2.9.0
remote:        Using rails-dom-testing 2.0.3
remote:        Using globalid 0.4.2
remote:        Using activemodel 6.1.1
remote:        Using jbuilder 2.11.1
remote:        Using rails-html-sanitizer 1.3.0
remote:        Using activejob 6.1.1
remote:        Using activerecord 6.1.1
remote:        Using actionview 6.1.1
remote:        Installing redis 4.2.5
remote:        Using actionpack 6.1.1
remote:        Using actioncable 6.1.1
remote:        Using activestorage 6.1.1
remote:        Using actionmailer 6.1.1
remote:        Using railties 6.1.1
remote:        Using sprockets-rails 3.2.2
remote:        Using actionmailBox 6.1.1
remote:        Using actiontext 6.1.1
remote:        Using sassc-rails 2.1.2
remote:        Using webpacker 5.2.1
remote:        Using rails 6.1.1
remote:        Using sass-rails 6.0.0
remote:        Using stimulus-rails 0.2.2
remote:        Using turbo-rails 0.5.7
remote:        Using hotwire-rails 0.1.3
remote:        Bundle complete! 18 Gemfile dependencies,59 gems Now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into `./vendor/bundle`
remote:        Removing bundler (2.1.4)
remote:        Removing turbolinks (5.2.1)
remote:        Removing turbolinks-source (5.2.0)
remote:        Bundle completed (3.08s)
remote:        Cleaning up the bundler cache.
remote: -----> Installing node-v12.16.2-linux-x64
remote: -----> Installing yarn-v1.22.4
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        yarn install v1.22.4
remote:        [1/4] Resolving packages...
remote:        [2/4] Fetching packages...
remote:        info fsevents@2.3.1: The platform "linux" is incompatible with this module.
remote:        info "fsevents@2.3.1" is an optional dependency and Failed compatibility check. Excluding it from installation.
remote:        info fsevents@1.2.13: The platform "linux" is incompatible with this module.
remote:        info "fsevents@1.2.13" is an optional dependency and Failed compatibility check. Excluding it from installation.
remote:        [3/4] Linking dependencies...
remote:        warning " > webpack-dev-server@3.11.2" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
remote:        warning "webpack-dev-server > webpack-dev-middleware@3.7.3" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
remote:        [4/4] Building fresh packages...
remote:        Done in 26.86s.
remote:        Compiling...
remote:        Compilation Failed:
remote:        ModuleNotFoundError: Module not found: Error: Can't resolve 'controllers' in '/tmp/build_aa8db0c8/app/javascript/packs'
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/Compilation.js:925:10
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/normalModuleFactory.js:401:22
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/normalModuleFactory.js:130:21
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/normalModuleFactory.js:224:22
remote:            at /tmp/build_aa8db0c8/node_modules/neo-async/async.js:2830:7
remote:            at /tmp/build_aa8db0c8/node_modules/neo-async/async.js:6877:13
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/normalModuleFactory.js:214:25
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:213:14
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:13:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:13:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:25:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:41:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/ModuleKindplugin.js:30:40
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:14:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/forEachBail.js:30:14
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:14:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/RootPlugin.js:37:38
remote:            at _next42 (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10),<anonymous>:6:1)
remote:        resolve 'controllers' in '/tmp/build_aa8db0c8/app/javascript/packs'
remote:          Parsed request is a module
remote:          using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript/packs)
remote:            Field 'browser' doesn't contain a valid alias configuration
remote:            resolve as module
remote:              looking for modules in /tmp/build_aa8db0c8/app/javascript
remote:                using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript)
remote:                  Field 'browser' doesn't contain a valid alias configuration
remote:                  using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript/controllers)
remote:                    no extension
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers is not a file
remote:                    .mjs
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.mjs doesn't exist
remote:                    .js
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.js doesn't exist
remote:                    .sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.sass doesn't exist
remote:                    .scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.scss doesn't exist
remote:                    .css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.css doesn't exist
remote:                    .module.sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.module.sass doesn't exist
remote:                    .module.scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.module.scss doesn't exist
remote:                    .module.css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.module.css doesn't exist
remote:                    .png
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.png doesn't exist
remote:                    .svg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.svg doesn't exist
remote:                    .gif
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.gif doesn't exist
remote:                    .jpeg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.jpeg doesn't exist
remote:                    .jpg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.jpg doesn't exist
remote:                    as directory
remote:                      existing directory
remote:                        using path: /tmp/build_aa8db0c8/app/javascript/controllers/index
remote:                          using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript/controllers/index)
remote:                            no extension
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index doesn't exist
remote:                            .mjs
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.mjs doesn't exist
remote:                            .js
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.js doesn't exist
remote:                            .sass
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.sass doesn't exist
remote:                            .scss
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.scss doesn't exist
remote:                            .css
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.css doesn't exist
remote:                            .module.sass
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.module.sass doesn't exist
remote:                            .module.scss
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.module.scss doesn't exist
remote:                            .module.css
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.module.css doesn't exist
remote:                            .png
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.png doesn't exist
remote:                            .svg
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.svg doesn't exist
remote:                            .gif
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.gif doesn't exist
remote:                            .jpeg
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.jpeg doesn't exist
remote:                            .jpg
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.jpg doesn't exist
remote:              /tmp/build_aa8db0c8/app/javascript/packs/node_modules doesn't exist or is not a directory
remote:              /tmp/build_aa8db0c8/app/javascript/node_modules doesn't exist or is not a directory
remote:              /tmp/build_aa8db0c8/app/node_modules doesn't exist or is not a directory
remote:              /tmp/node_modules doesn't exist or is not a directory
remote:              /node_modules doesn't exist or is not a directory
remote:              looking for modules in /tmp/build_aa8db0c8/node_modules
remote:                using description file: /tmp/build_aa8db0c8/package.json (relative path: ./node_modules)
remote:                  Field 'browser' doesn't contain a valid alias configuration
remote:                  using description file: /tmp/build_aa8db0c8/package.json (relative path: ./node_modules/controllers)
remote:                    no extension
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers doesn't exist
remote:                    .mjs
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.mjs doesn't exist
remote:                    .js
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.js doesn't exist
remote:                    .sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.sass doesn't exist
remote:                    .scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.scss doesn't exist
remote:                    .css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.css doesn't exist
remote:                    .module.sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.module.sass doesn't exist
remote:                    .module.scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.module.scss doesn't exist
remote:                    .module.css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.module.css doesn't exist
remote:                    .png
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.png doesn't exist
remote:                    .svg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.svg doesn't exist
remote:                    .gif
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.gif doesn't exist
remote:                    .jpeg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.jpeg doesn't exist
remote:                    .jpg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.jpg doesn't exist
remote:                    as directory
remote:                      /tmp/build_aa8db0c8/node_modules/controllers doesn't exist
remote:        
remote: 
remote:  !
remote:  !     Precompiling assets Failed.
remote:  !
remote:  !     Push rejected,Failed to compile Ruby app.
remote: 
remote:  !     Push Failed
remote:  !
remote:  ! ## Warning - The same version of this code has already been built: 0beb51342bdb63474012846f517d2f5978f00b80
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version 0beb51342bdb63474012846f517d2f5978f00b80
remote:  ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote:  !
remote:  ! If you are developing on a branch and deploying via git you must run:
remote:  !
remote:  !     git push heroku <branchname>:main
remote:  !
remote:  ! This article goes into details on the behavior:
remote:  !   https://devcenter.heroku.com/articles/duplicate-build-version
remote: 
remote: Verifying deploy...
remote: 
remote: !   Push rejected to chatapp4db.
remote: 
To https://git.heroku.com/chatapp4db.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: Failed to push some refs to 'https://git.heroku.com/chatapp4db.git'

如果您能确定问题,请告诉我。我可以看到这是一个模块错误,但它只发生在 hot-wire:install 中。

解决方法

我认为您需要安装 webpacker,好像 node_module 文件夹不存在。 安装 webpacker

bundle exec rails webpacker:install
,

因此,显然当您执行 hotwire:install 时,它忽略了还安装 controllers 模块。运行 yarn add controllers 为我解决了这个问题。我还必须是 Heroku 的经过验证的用户才能包含 Heroku Redis Hobby Dev 计划,否则 Heroku 实例将完全崩溃,我必须重新启动服务器。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...