2017-01-30 7 views
0

Мы разрабатываем приложение ReactJS с использованием Create-React-App, которое подается с нашего сервера Node/Express, который также обслуживает API. Мы развертываем весь сервер в Heroku с помощью node/JS buildpack и пытаемся получить шаг сборки CRA npm run build в сценарии postinstall с узла package.json файла, как это было предложено @mars in this issue.Развертывание Create-React-App в Heroku не выполнено с `response-scripts: not found`

Проблема в том, что развертывание Heroku не соответствует этой ошибке. Обратите внимание, что эта ошибка происходит со мной когда-то локально, но затем npm install из web_app решает проблему, но не при запуске в Heroku. У меня есть два смежных вопроса:

  1. Как развернуть приложение Heroku a Node/Express, которое обслуживает как API, так и приложение Create-React-App? Я могу зафиксировать свой каталог сборки, но это действительно не так.
  2. Почему скрипты реагирования исчезают, и я должен запускать несколько раз npm install.
+0

Вы добавили скрипт 'postinstall'? Можете ли вы разместить файл 'package.json'? Вы запустили 'npm install -g webpack' внутри вашей командной строки? – Daniel

+0

Создал ли ваш узел 'server.js'? – Daniel

ответ

1

Реакции-скрипты, объявленные как devDependency или регулярная зависимость в package.json? Поскольку вы строите на Heroku, и геройку читает переменную env как производственную (я предполагаю здесь), она не будет устанавливать реакции-скрипты. Попробуйте перевести сценарии реакции как регулярную зависимость и повторите попытку.

С другими поставщиками облаков я, скорее всего, не пойдет по этому пути, но с Heroku это путь наименьшего сопротивления, который я нашел. В этой статье мы расскажем вам немного подробнее о вашем сценарии. https://originmaster.com/running-create-react-app-and-express-crae-on-heroku-c39a39fe7851

+0

Это была именно эта проблема, и я получил ответ от [Mars] (https://github.com/mars) в этом сообщении [github issue post] (https://github.com/mars/create-react- app-buildpack/issues/32 # issuecomment-276081892) –

0

Можете ли вы рассказать, как выглядят сценарии вашего файла Package.json? Я фактически развернулся в Хероку вчера и, похоже, работает для меня нормально.

Возможно, ваши зависимости не добавлены правильно в package.json.

Вот как выглядят мои скрипты. (если вы не имеете любой СКС/меньше/дерзость игнорировать первые 2 скриптов)

"scripts": { 
"build-css": "node-sass src/ -o src/", 
"watch-css": "npm run build-css && node-sass src/ -o src/ --watch --recursive", 
"start": "npm run start:server", 
"watch": "npm-run-all --parallel watch-css start:*", 
"start:server": "node server/server.js", 
"start:client": "react-scripts start", 
"build": "npm run build-css && react-scripts build", 
"test": "react-scripts test --env=jsdom", 
"eject": "react-scripts eject", 
"postinstall": "npm run build"} 

При работе в области развития, чтобы воспользоваться Hotrealoding я бегу

npm run watch 

И PROD я бегу

npm run build 

И затем я развертываю в Хереку. Попробуйте проверить журналы из Heroku в отдельном окне терминала, чтобы вы могли проверить, что не так с вашим развертыванием.

Просто используйте heroku logs, чтобы отобразить последние 100 строк ваших журналов.

Или хвост журналы в режиме реального времени: heroku logs -t

Надеется, что это помогает. Приветствия

+0

Решение в основном в этой строке: '" postinstall ":" knex migrate: latest && if [\ "$ NODE_ENV \" = production], затем cd web_app/&& npm install --only = dev && npm install && npm run build; fi "' –

9

@johnnycon -

Это был именно вопрос, и я получил ответ от Mars в этом github issue post:

@philjoseph, реагируют-скриптов (по умолчанию) в devDependency для приложений CRA, но у Heroku Node buildpack есть среда NODE_ENV = production, которая заставляет npm install пропускать devDeps.

Чтобы установить эти devDeps тоже:

НОЙ инсталляцию --only = DEV & & НПХ установить & & НОГО пробега построить

Он также указал на этот прекрасный репо: https://github.com/mars/heroku-cra-node

I после этого он работает как шарм :)

+0

было бы хорошо отметить это как ответ, чтобы оно отображалось вверху. –

+0

Этот ответ должен указывать как лучший ответ –

+0

Что делать, если мы используем пряжу? Я попробовал: пряжа установить --only = dev && yarn install && npm запустить сборку , но это, похоже, не вносит изменений в файл блокировки пакета – PhoenixB

2

С тех пор, как вы d «реакции-скрипты» как в разработке, так и в производстве, вы можете просто перевести «реакционные скрипты»: «1.0.16» из «devDependencies» в «зависимостей», поэтому геройку не игнорирует его.

 Смежные вопросы

  • Нет связанных вопросов^_^