Я работаю с существующим приложением Rails, которое было переработано как API для React и бэкэнда панели мониторинга.
Полное приложение React (с React Router, Redux и Saga) было собрано и установлено в папку клиента в корне Rails.
На моем локальном компьютере я запускаю сервер узлов на порту 3000, а сервер rails на 3001. Мой package.json в папке клиента содержит
"proxy": "http://localhost:3001/",
Я могу получить доступ к приложению React, но оно не получает данные от API. Я могу получить доступ к приложению Rails на 3001. Ошибка журнала:
Proxy error: Could not proxy request /api/v1/homedata from localhost:3000 to http://localhost:3001/.
Моя консоль показывает эту ошибку:
xhr.js:178 GET http://localhost:3000/api/v1/homedata 500 (Internal Server Error)
При развертывании в Heroku приложение React подается в моем домене, но я не могу получить доступ к панели инструментов Rails. Однако приложение React правильно обращается к Rails API и показывает данные.
Я провел около трех дней, ища повсюду какую-то идею. Мое лучшее предположение на данный момент состоит в том, что существует некоторая проблема с сервером Rails или маршрутами. Однако я понятия не имею, где искать. Я выложу свои маршруты.rb
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root "dashboard/home#index"
### Routing for the dashboard ###
namespace :dashboard do
resources :home, only: [:index]
resources :connect_groups
resources :events
resources :event_types
resources :locations
resources :podcasts
resources :users
get "/ajax_load_events", to: "home#ajax_load_events"
get "/ajax_load_locations", to: "home#ajax_load_locations"
get "/ajax_load_podcasts", to: "home#ajax_load_podcasts"
get "/ajax_load_connect_groups", to: "home#ajax_load_connect_groups"
get "/ajax_load_users", to: "home#ajax_load_users"
get '', to: 'home#index'
post "dashboard/podcasts/upload", to: "audio_clips#create"
end
devise_for :users, :controllers => {:registrations => "registrations"}
### Routing for the new API ###
namespace :api, defaults: { format: 'json' } do
namespace :v1 do
resources :locations
resources :podcasts
resources :events
resources :connect_groups
resources :messages, only: [ :create]
get "/location/*id", to: "locations#get_location"
get "/event/featured", to: "events#featured_events"
get "/homedata", to: "home#index"
end
end
mount Shrine.presign_endpoint(:cache) => "/presign"
match "/loaderio-0077704941f2bf1a629295ce9fb1a229", :to => proc { |env| [200, {}, ["loaderio-0077704941f2bf1a629295ce9fb1a229"]] }, via: :get
get '*path', to: "application#fallback_index_html", constraints: ->(request) do
!request.xhr? && request.format.html?
end
end
Любая помощь или какая-то идея, с чего начать, будет огромной помощью.