質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3965閲覧

React routerでビルド時だけ404が発生する

spartan

総合スコア6

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/06/14 04:32

現在リアクトを用いてアプリを作っていますが、ルーティングでトラブルが起こっています。

具体的には、React routerを用いてlists.js内でvideo.jsへのリンクをパラメーター付きで張っており、リンクをクリックするとvideoに飛ぶ流れで、開発環境では問題なく動作するのですが、ビルド時のみ404が表示されます。

ビルド時の動作環境はmampでアパッチサーバーで試しました。

リンク構造↓

root link : http://localhost:3000/
video link: http://localhost:3000/video/1234

開発ディレクトリ構成↓

src/
├components/
│ ├ lists.js  (動画へのリンク一覧を表示
│ └ video.js (lists.jsからのジャンプ先
├ App.js   (lists.jsとvideo.jsをまとめている
└ index.js

ビルド時生成ファイル( npm run build )

build/
├ index.html
├ service-worker.js
├ manifest.json
├ asset-manifest.json
└ static/
└ css/
└ media/
└ js/

開発環境で動作してる状態↓

create-react-appで環境を整えました

App.js

javascript

1import Video from './components/video'; 2import Lists from './components/lists'; 3 4... 5 6 render() { 7 return ( 8 <BrowserRouter> 9 <div className="App">.... 10 <div className="col-md-9 col-sm-8"> 11 <Route exact path='/' component={this.state.loading ? this.loading : this.viewList}/> 12 <Route path='/watchvideo/:id' render={props => <Watchvideo {...props}/>}/> 13 ...</div> 14 </div> 15 </BrowserRouter> 16 ); 17 }; 18...

lists.js

javascript

1... 2 3<Link to={`/watchvideo/${video.vid}`} target="_blank"> 4 ...content.... 5</Link> 6 7コード

video.js

javascript

1const Video = (props) => { 2 console.log(props.match.params.id); 3 4 return( 5 <div> 6 ..content... 7 </div> 8 ); 9} 10 11export default Video; 12コード

package.json

javascript

1{ 2 "name": "jungle", 3 "version": "0.1.0", 4 "private": true, 5 "dependencies": { 6 "bootstrap": "^4.1.1", 7 "connect": "^3.6.6", 8 "cors": "^2.8.4", 9 "express": "^4.16.3", 10 "file-loader": "^1.1.11", 11 "jquery": "^3.3.1", 12 "jw-react-pagination": "^1.0.7", 13 "react": "^16.4.0", 14 "react-dom": "^16.4.0", 15 "react-router-dom": "^4.3.1", 16 "react-scripts": "1.1.4", 17 "reactstrap": "^6.1.0", 18 "serve-static": "^1.13.2" 19 }, 20 "scripts": { 21 "start": "react-scripts start", 22 "build": "react-scripts build", 23 "test": "react-scripts test --env=jsdom", 24 "eject": "react-scripts eject" 25 }, 26 "devDependencies": {} 27} 28 29コード

ビルド後

manifest.json

javascript

1{ 2 "short_name": "React App", 3 "name": "Create React App Sample", 4 "icons": [ 5 { 6 "src": "favicon.ico", 7 "sizes": "64x64 32x32 24x24 16x16", 8 "type": "image/x-icon" 9 } 10 ], 11 "start_url": "./index.html", 12 "display": "standalone", 13 "theme_color": "#000000", 14 "background_color": "#ffffff" 15} 16 17コード

すみませんがよろしくご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

apacheの.htaccessにリライトを定義したら解決しました

apache

1RewriteEngine on 2RewriteBase / 3RewriteRule ^index.html$ - [L] 4RewriteCond %{REQUEST_FILENAME} !-f 5RewriteCond %{REQUEST_FILENAME} !-d 6RewriteRule . /index.html [L] 7コード

投稿2018/06/14 06:02

spartan

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問