Ошибка при компиляции ресурсов при развертывании в Heroku с помощью веб-пакета - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть проект, который я недавно обновил до rails 5.2, и я использую гем webpacker.Я получаю следующую ошибку при попытке развертывания в Heroku:

...
remote:        Webpacker is installed ? ?
remote:        Using /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/config/webpacker.yml file for setting up webpack paths
remote:        Compiling…
remote:        Compilation failed:
remote:        /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:11:in `exec': No such file or directory - /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/node_modules/.bin/webpack (Errno::ENOENT)
remote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:11:in `block in run'
remote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:10:in `chdir'
remote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:10:in `run'
remote:         from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/runner.rb:6:in `run'
remote:         from ./bin/webpack:15:in `<main>'
...

Локально мой каталог 'node_modules' находится в .gitignore (я полагаю, один из сценариев установки веб-упаковщика поместил его туда).

Нужно ли игнорировать node_modules, или мне нужно что-то добавить в файл конфигурации, чтобы сообщить удаленному, где найти веб-пакет?

Вот мой package.json:

{
  "dependencies": {
    "@rails/webpacker": "3.5.5",
    "babel-preset-react": "^6.24.1",
    "d3": "^5.7.0",
    "jquery": "^3.3.1",
    "prop-types": "^15.6.2",
    "react": "^16.5.2",
    "react-addons-transition-group": "^15.6.2",
    "react-dom": "^16.5.2",
    "react-transition-group": "^2.4.0",
    "react_ujs": "^2.4.4"
  },
  "devDependencies": {
    "webpack-dev-server": "2.11.2"
  },
  "engines": {
    "yarn": "1.10.1"
  } 
}

Я заметил, что выходные данные из heroku упоминают настройку путей веб-упаковщика с помощью config / webpacker.yml, но я не могу найти упоминания в этом файле о поиске веб-пакета в node_modules - вот текст webpacker.yml:

# Note: You must restart bin/webpack-dev-server for changes to take effect

default: &default
  source_path: app/javascript
  source_entry_path: packs
  public_output_path: packs
  cache_path: tmp/cache/webpacker

  # Additional paths webpack should lookup modules
  # ['app/assets', 'engine/foo/app/assets']
  resolved_paths: []

  # Reload manifest.json on all requests so we reload latest compiled packs
  cache_manifest: false

  extensions:
    - .jsx
    - .js
    - .sass
    - .scss
    - .css
    - .module.sass
    - .module.scss
    - .module.css
    - .png
    - .svg
    - .gif
    - .jpeg
    - .jpg

development:
  <<: *default
  compile: true

  # Reference: https://webpack.js.org/configuration/dev-server/
  dev_server:
    https: false
    host: localhost
    port: 3035
    public: localhost:3035
    hmr: false
    # Inline should be set to true if using HMR
    inline: true
    overlay: true
    compress: true
    disable_host_check: true
    use_local_ip: false
    quiet: false
    headers:
      'Access-Control-Allow-Origin': '*'
    watch_options:
      ignored: /node_modules/


test:
  <<: *default
  compile: true

  # Compile test packs to a separate directory
  public_output_path: packs-test

production:
  <<: *default

  # Production depends on precompilation of packs prior to booting for performance.
  compile: false

  # Cache manifest.json for performance
  cache_manifest: true

Весь проект можно найти на github

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я наконец-то решил эту проблему, перестроив каталог /bin, используя следующее:

rails app:update:bin

Я решил, что в этом каталоге что-то повреждено.Я запустил проект, используя гемы rails-jquery и rails-react, а затем использовал сценарии установки webpacker для установки jquery и реагирования.Я решил использовать yarn add ... для добавления jquery и рельсов, чтобы я мог более плотно и согласованно управлять своими зависимостями с помощью пряжи.

0 голосов
/ 03 октября 2018

Мне удалось предварительно скомпилировать ваши ресурсы на моем локальном компьютере, используя yarn 1.10.1.Heroku может использовать более старую версию пряжи, что может вызвать некоторые проблемы с webpacker 3.

Поэтому попробуйте обновить до последней версии пряжи, а затем запустите на своем локальном компьютере следующее:

# reinstall the node_modules
yarn install

# this is what heroku does to precompile your assets
bundle exec rake assets:precompile

Это должно обновить ваш файл yarn.lock.Если все работает, то попробуйте сделать коммит и снова нажать git.

Надеюсь, это будет отсортировано.Удачи.

...