Rails с React обслуживает только страницы React при развертывании на heroku, не может получить доступ к каким-либо маршрутам Rails - PullRequest
0 голосов
/ 16 января 2019

Я работаю с существующим приложением 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

Любая помощь или какая-то идея, с чего начать, будет огромной помощью.

1 Ответ

0 голосов
/ 17 января 2019

Решил проблему. Это была проблема с не обновлением кэша браузера .... duhh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...