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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

React.js

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

Q&A

解決済

2回答

3349閲覧

LaravelでReactを使いたい

yys949

総合スコア9

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

React.js

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

0グッド

0クリップ

投稿2020/01/19 15:51

プログラミング自体勉強し始めたばかりなのですが、タイトルの通りLaravelでReactを使いたいと思い調べているのですが、エラーが出て全く進めません。
Laravelがどんな感じで動いているのかなんとなくはわかり始めたのですが、フロントでReactを使うためにどういう書き方をしたらいいのかがわからないため、教えていただけないでしょうか。
まずExample.jsを表示させようとしているのですが、エラーがでてしまい、うまくできません。

Laravel 6 でVue.jsやReactを使う
上記のサイトを参考にLaravel/uiをインストールしてphp artisan ui reactを実行しました。

yarn hotでビルドができるか試したのですが、コンパイルエラーがでてできませんでした。

LaravelにReactを導入する。Vue.js→Reactへスカフォールド切り替え

また、Laravelのバージョンは違いますが、上記も参考にしました。

resoucesディレクトリは以下のようになっています。

resources
├── assets
│ ├── js
│ │ ├── app.js
│ │ ├── bootstrap.js
│ │ ├── components
│ │ │ └── Example.js
│ └── sass
│ ├── app.scss
│ └── _variables.scss

また、package.json杯かのようになっています。

json

1{ 2 "private": true, 3 "scripts": { 4 "dev": "npm run development", 5 "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 6 "watch": "npm run development -- --watch", 7 "watch-poll": "npm run watch -- --watch-poll", 8 "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", 9 "prod": "npm run production", 10 "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 11 }, 12 "devDependencies": { 13 "@babel/preset-react": "^7.0.0", 14 "axios": "^0.19", 15 "bootstrap": "^4.0.0", 16 "cross-env": "^5.1", 17 "jquery": "^3.2", 18 "laravel-mix": "^4.0.7", 19 "lodash": "^4.17.13", 20 "popper.js": "^1.12", 21 "react": "^16.2.0", 22 "react-dom": "^16.2.0", 23 "resolve-url-loader": "^2.3.1", 24 "sass": "^1.15.2", 25 "sass-loader": "^7.1.0" 26 } 27} 28

Exmple.jsは以下のように書いてあります。

JavaScript

1import React from 'react'; 2import ReactDOM from 'react-dom'; 3 4function Example() { 5 return ( 6 <div className="container"> 7 <div className="row justify-content-center"> 8 <div className="col-md-8"> 9 <div className="card"> 10 <div className="card-header">Example Component</div> 11 12 <div className="card-body">I'm an example component!</div> 13 </div> 14 </div> 15 </div> 16 </div> 17 ); 18} 19 20export default Example; 21 22if (document.getElementById('example')) { 23 ReactDOM.render(<Example />, document.getElementById('example')); 24} 25

viewはindex.blade.phpを作成し以下のようにしてあります。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>React Sample</title> </head> <body> <div id="example"></div> <script type="module" src="{{asset('/js/app.js')}}"></script> </body> </html>

ControllerはindexController.phpを作成し以下のように書いています。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class IndexController extends Controller { public function react() { return view('index'); } }

publicのjsのあたりの構造は以下のようになっており、
public
├── js
│ ├── app.js
│ │

app.jsは以下のように書いています。

import React from 'react'; import ReactDOM from 'react-dom'; import * as serviceWorker from './serviceWorker'; import Example from '../resources/assets/js/components/Example.js'; ReactDOM.render( <Example />, document.getElementById('example') ); // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. // Learn more about service workers: https://bit.ly/CRA-PWA serviceWorker.unregister();

ほぼ参考サイトのものをそのまま使っているのですが、この状態でxamppでlocalhostの8000につなげてもコンソールに
Uncaught SyntaxError: Unexpected token '<' app.js 7
とでてきて表示ができません。

インポート部分の書き方がわるいのかとapp.jsの4行目を
import Exmple from 'Example';
のように変えてみたりしても変化がありません。

yarn hotが実行できていないのでpackage.jsonのところで何か間違いがあったのかと思ったのですが、よくわからず、yarnが使えないならnpmにすればいいのかと思いためしたのですが、そもそもnpmはnpm installの時点以下のようなエラーが出て使えませんでした。

C:\xampp\htdocs\LaravelReact>npm install
Error: EPERM: operation not permitted, mkdir 'C:\Program Files\Git\usr\local'
TypeError: Cannot read property 'get' of undefined
at errorMessage (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-me
at errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-ha
at C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js:78:20
at cb (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:225:22)
at C:\Program Files\nodejs\node_modules\npm\lib\npm.js:263:24
at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:81:7
at Array.forEach (<anonymous>)
at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:80:13
at f (C:\Program Files\nodejs\node_modules\npm\node_modules\once\once.js:25:
at afterExtras (C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:
C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:97
var doExit = npm.config.loaded ? npm.config.get('_exit') : true
^

TypeError: Cannot read property 'loaded' of undefined
at exit (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js
at process.errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils
at process.emit (events.js:210:5)
at process._fatalException (internal/process/execution.js:150:25)
Error: EPERM: operation not permitted, mkdir 'C:\Program Files\Git\usr\local'
TypeError: Cannot read property 'get' of undefined
at errorMessage (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-me
at errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-ha
at C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js:78:20
at cb (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:225:22)
at C:\Program Files\nodejs\node_modules\npm\lib\npm.js:263:24
at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:81:7
at Array.forEach (<anonymous>)
at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:80:13
at f (C:\Program Files\nodejs\node_modules\npm\node_modules\once\once.js:25:
at afterExtras (C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:
C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:97
var doExit = npm.config.loaded ? npm.config.get('_exit') : true
^

TypeError: Cannot read property 'loaded' of undefined
at exit (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js
at process.errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils
at process.emit (events.js:210:5)
at process._fatalException (internal/process/execution.js:150:25)

検索能力が低いことと、初学者で勉強不足なため、何をどうすればいいのかがわからない状態です。
ほとんどわかっていることがない状態で申し訳ないのですが、どこを修正したら目的としているExample.jsの中身をブラウザで表示できるようになるか教えていただけないでしょうか。

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

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

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

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

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

guest

回答2

0

自己解決

npm で出たエラーに従いGit/usrの下にlocalを作ったらnpmがインストールできてbuildできました。
基礎からの勉強ができていないため理由がよくわからないですがpermissionの問題だったようです。

投稿2020/01/27 14:50

yys949

総合スコア9

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

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

0

「JavaScriptもビルドして使うもの」という常識に変わったのが2011とか2012頃。
今React使ってる人は何年分もの積み重ねの上で使えてるので初心者がいきなり使おうとしても無理。

Laravelがやってることも基礎知識はある前提で楽に使えるように整備してるだけ。

「現代JSはビルドして使う」という一番重要な概念が抜けてる人に説明してもどうにもならないのでもっと基本から勉強したほうがいい。

投稿2020/01/20 00:15

kawax

総合スコア10377

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問