Laravel + React でアプリを作成し、Xserver にてweb にアップをしました。
ローカルホストでは問題なく動いていたログイン機能で、500 Internal server error が出ました。
フォームに入力し、submit ボタンを押すとエラーメッセージが出ます。
エラーメッセージ
POST (webサイトのURL/api/login) 500 Uncaught (in promise) Error: Request failed with status code 500 at createError (app.js:32422:15) at settle (app.js:32714:12) at XMLHttpRequest.onloadend (app.js:31743:7)
下記ソースコードのaxios.post の部分で通信が上手くできずエラーになっているのではないかと考え、
defaultURL がおかしいのかと書きかえたりしましたが解決できませんでした。
初学者のためサーバー周りの知識が疎く、、
説明など足りないところがあればご指摘いただければと思います。
お力添えいただけると幸いです。よろしくお願いいたします。
該当のソースコード
Login.jsx
1import React, { useState } from "react"; 2import swal from "sweetalert"; 3import { useHistory } from 'react-router-dom'; 4import axios from 'axios'; 5 6function Login() { 7 8 const history = useHistory(); 9 const [ loginInput, setLogin ] = useState({ email: '', password: '', error_list: [], }); 10 //フォームに入力された時の動作 11 const handleInput = (e) => { 12 e.persist(); 13 setLogin({...loginInput, [e.target.name]: e.target.value}); 14 } 15 //サブミットボタンが押された時の動作 16 const loginSubmit = (e) => { 17 e.preventDefault(); 18 const data = { 19 email: loginInput.email, 20 password: loginInput.password, 21 } 22 axios.get('/sanctum/csrf-cookie').then(response => { 23 axios.post(’/api/login', data).then(res => { 24 if(res.data.status === 200){ 25 localStorage.setItem('auth_token', res.data.token); 26 localStorage.setItem('auth_name', res.data.username); 27 localStorage.setItem('auth_id', res.data.id); 28 history.push('/'); 29 location.reload(); 30 } else if (res.data.status === 401){ 31 swal("注意", res.data.message, "warning"); 32 } else { 33 setLogin({...loginInput, error_list: res.data.validation_errors}); 34 } 35 }); 36 }); 37 } 38 39 return (<div className="container"> 40 <div className="row justify-content-center"> 41 <div className="col-md-6 col-lg-6 my-5 mx-auto"> 42 <div className="card"> 43 <div className="card-header"> 44 <h4>Log In</h4> 45 </div> 46 <div className="card-body"> 47 <form onSubmit={loginSubmit}> 48 <div className="form-group mb-3"> 49 <label>Mail Address</label> 50 <input type="email" name="email" onChange={handleInput} value={loginInput.email} className="form-control" /> 51 <span>{loginInput.error_list.email}</span> 52 </div> 53 <div className="form-group mb-3"> 54 <label>Password</label> 55 <input type="password" name="password" onChange={handleInput} value={loginInput.password} className="form-control" /> 56 <span>{loginInput.error_list.password}</span> 57 </div> 58 <div className="form-group mb-3"> 59 <button type="submit" className="btn btn-primary">Log In</button> 60 </div> 61 </form> 62 </div> 63 </div> 64 </div> 65 </div> 66 </div> 67 ); 68} 69 70export default Login;
app.jsx
1import React from 'react'; 2import ReactDOM from 'react-dom'; 3import { BrowserRouter, Route, Switch, Link, Redirect } from 'react-router-dom'; 4import Example from './Example'; 5import Register from './Register'; 6import Login from './Login'; 7import { Top } from './Top'; 8import GlobalNav from './GlobalNav'; 9import axios from 'axios'; 10 11 12axios.defaults.baseURL = webサイトのURL; 13axios.defaults.headers.post['Content-Type'] = 'application/json'; 14axios.defaults.headers.post['Accept'] = 'application/json'; 15axios.defaults.withCredentials = true; 16axios.interceptors.request.use(function(config){ 17 const token = localStorage.getItem('auth_token'); 18 const username = localStorage.getItem('auth_name'); 19 const userId = localStorage.getItem('auth_id'); 20 config.headers.Authorization = token ? `Bearer ${token}` : ''; 21 return config; 22}); 23 24function App(){ 25 return ( 26 <BrowserRouter 27 basename='/schedule_app/public'> 28 <GlobalNav /> 29 <Switch> 30 <Route path="/top"> 31 <Top /> 32 </Route> 33 <Route path="/register"> 34 <Register /> 35 </Route> 36 <Route path="/login"> 37 <Login /> 38 </Route> 39 <Route exact path="/"> 40 <Example /> 41 </Route> 42 <Redirect to = "/top" /> 43 </Switch> 44 </BrowserRouter> 45 ) 46} 47 48export default App; 49 50if (document.getElementById('nav')) { 51 ReactDOM.render(<App />, document.getElementById('nav')); 52}
補足情報
回答1件
あなたの回答
tips
プレビュー