Как заставить Heroku распознать пряжу.замок или пакет.json в подкаталоге (не root)
у меня есть приложение Rails, использующее React, Webpack и Yarn для клиентской стороны. У меня есть все, что связано с клиентской стороной в каталоге /client. Сюда входит и моя история.замка и пакета.файлы json. У меня есть Procfile, который компакт-диски в / client и правильно работает yarn run build
. Это работает локально без ошибок. Однако, когда я развертываю / нажимаю на Heroku, мой толчок отклоняется, и я получаю следующую ошибку:
remote: cd client && yarn run build:production
remote: sh: 1: yarn: not found
remote: rake aborted!
remote: Command failed with status (127): [cd client && yarn run build:production...]
что это говорит мне о том, что Heroku не смог найти пряжа.заблокировать файл на корневом уровне. Как заставить Heroku использовать yarn.lock
файл в моем каталоге / client?
или причина этой ошибки в чем-то другом?
6 ответов
только что сам прошел через подобное. Вам нужно заказать buildpacks, чтобы этот узел был первым. Если пряжа.блокировка находится в корневом каталоге (или yarn находится в вашем ключе "двигатели", как в ответе @remydib), затем узел buildpack установит yarn, а затем ваши пакеты. Если у вас есть yarn.lock
in / client, поместите один в корень и добавьте postinstall
скрипт к нему, который говорит cd client && yarn run build
.
в моем случае (rake assets:precompile вызывает yarn и терпит неудачу), по какой-то причине, когда buildpacks идут ruby -> узел, Heroku не ждет установки узла, прежде чем пытаться запустить задачи rake, и мы идем kablooie.
надеюсь, что это помогает.
обязательно используйте как ruby, так и node buildpacks. Я получил эту ошибку, когда я этого не сделал.
выполните их в корневой папке:
heroku buildpacks:set heroku/ruby
heroku buildpacks:add --index 1 heroku/nodejs
источники:https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app
https://github.com/shakacode/react_on_rails/blob/master/docs/additional-reading/heroku-deployment.md
-
использовать
yarn
для установки зависимостей приложенияa)
yarn.lock
должен присутствовать в корне РЕПО.yarn install
б)package-lock.json
должны быть удаленыgit rm package-lock.json
-
использовать
npm
a)
yarn.lock
должны быть удалены
источник: https://devcenter.heroku.com/articles/ruby-support#installed-binaries
Я добавлю ответ для документа еще один возможный вариант использования. Я испытал что-то подобное, несколько buildpacks, и я проверил все во всех ответах:
-
node-js
был объявлен сначала в - a
yarn.lock
был добавлен в корень проекта - зависимость пряжи, объявленная в разделе двигатели на
package.json
тем не менее yarn
не собирал, так как я использовал более старую версию node-js buildpack.
натыкаясь на версию buildpack последней решить мою проблему:
https://github.com/heroku/heroku-buildpack-nodejs#v118
вы можете сохранить оба пакета.json и yarn.блокировка путем добавления одного из них
.слагиньор.
Он работает как .gitignore-он просто определяет, какие файлы игнорировать, нажимая на Heroku.