еще раз, я хочу собрать все на локалке, потом прод, это логично
не понимаю, что вам мешает работать на локалке следующим образом:
- выполняете npm start (так вы можете править на горячую)
- поднять yii локально и посылать к нему запросы
- когда заканчиваете работу и больше не предвидится изменений - заливаете на прод и делаете билд
Возможно где-то выше я вам назначение index.html трактовал не с 100% точностью, но уверяю, если сделаете по этой схеме, то вы будете видеть изменения в ваших компонентов в real-time
RusticAnd, вы спорите по факту не зная сами как это должно быть. Хотите чтобы было в лайве - на проде можете также запустить npm start, у вас на хосте на порту 3000 будет работать ваше реакт приложение. Для прода однозначно то, как говорю я. Но в целом где то на сервере работать с реатом в режиме разработки имхо плохая практика. Что мешает работать локально и слать запросы к api на сервер, если знания не позволяют развернуть все локально?!
Важно, при работе в режиме разработки (npm start) у вас на бэкэенд вряд ли будут посылаться запросы из за политики CORS. Надо настроить веб сервер, чтобы отдавал нужные заголовки.
RusticAnd, вы не понимаете сути.
запускаете npm start и работаете со своим кодом, при этом все изменения отображаются тут же, за это отвечает нода. Так и работаете пока не доделаете все, либо часть функционала. По идее это надо использовать при разработке локально. Приложение при этом доступно по localhost:3000
после того, как надо перенести все на прод, вы запускаете npm run build и проект билдится в статику. Тут уже ничего править не надо
тот файл index.html как раз тот, который и выводит всю информацию на экран, но с помощью нода.
все верно - этот файл работает с помощью ноды - это когда вы запускаете npm start
вам надо выполнить npm run build и вам нода сделает билд проекта в другой index.html файл (если настройки не менялись, то это будет вроде папка dist) и рядом другие js и css файлы, которые в index.html будут подключены уже. Вот для него уже нода не нужна и его то и надо рендерить в yii2. Никаких библиотек не нужно.
RusticAnd, посмотрите внимательно тот файл, что вы приводите. Где хоть один скрипт js подключаемый, который есть реакт? Что по вашему должен выводить этот файл?
RusticAnd, то, что вы на скрине указали - это не совсем ваше приложение. Приложение index.html должно появиться после билда (npm run build) в то место, куда вы укажите в настройках. По-умолчанию не помню куда, но точно в корень проекта реакт.
На счет куда закинуть в структуре yii2 в принципе не важно. Главное, чтобы yii2 мог его отрендерить. К примеру в symfony по-умолчанию можно рендерить шаблоны только в папке templates. Для изменения этого поведения надо настройки менять. Не помню как в yii2 но вроде никаких ограничений нет. Но я в принципе делаю в билд в корневую папку сервера (в случае c yii2 это web), например project_folder/web/dist - в dist билдится реакт. Но можно и в frontend/dist например сбилдить и с контроллера его отрендерить.
Спасибо за развернутый ответ. Хоть я задачу и закрыл другим способом все же спрошу для развития, как заставить слушаться на каком то отличном от хоста ip, в двух слова?)
видел это когда искал решение. Все равно не подошло, вероятно, потому что по факту у метя файлы сайта находятся снаружи контейнера так же как и nginx и все это дело обращается к php в контейнере. И вот оттуда уже не получалось соединиться с бд. Расширения вроде стояли. Хотя уже хз.
В итоге плюнул и сделал две версии php через remi репозитории. Так даже лучше на мой взгляд.
В любом случае спасибо!
BoShurik, я обратил внимание еще, что session_id у обоих приложений разной длинны. 26 и 32 символа. Не знаю оказывает ли это на процесс. Сделал одинаковой путем session.sid_length в php.ini, но тоже не помогло. Может там влияет как то способ хэширования или еще что-либо!?
мой пост тут как я решал эту проблему. Если не справитесь, пишите постараюсь помочь.