I'm very new to React.js. I installed Laravel 5.7 and swapped Vue.js scaffolding with React by running this command:
php artisan preset react
Now the problem is, I cannot assign anything to the state inside a component.
For example if I do the following inside the component:
state = { foo: false };
I got the error:
ERROR in ./resources/js/components/Root.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: D:\xampp\htdocs\smart-school-v0.1\resources\js\components\Root.js: Support for the experimental syntax 'classProperties' isn't currently enabled (8:11):
I installed:
@babel/plugin-proposal-class-properties
and updated .babelrc (Babel configuration file) like this:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
I followed this but no luck.
Package.json
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"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",
"prod": "npm run production",
"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"
},
"devDependencies": {
"@babel/plugin-proposal-class-properties": "^7.2.3",
"@babel/preset-env": "^7.2.3",
"@babel/preset-react": "^7.0.0",
"axios": "^0.18",
"babel-preset-react": "^6.23.0",
"bootstrap": "^4.0.0",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^4.0.13",
"lodash": "^4.17.5",
"popper.js": "^1.12",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"resolve-url-loader": "^2.3.1",
"sass": "^1.15.3",
"sass-loader": "^7.1.0"
},
"dependencies": {
"react-router-dom": "^4.3.1"
}
}
.babelrc
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
Root.js Component
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
export default class Root extends Component {
state = { foo: false };
render() {
return (
<p>Loaded</p>
);
}
}
if (document.getElementById('app')) {
ReactDOM.render(<Root />, document.getElementById('app'));
}
It is not working as expected and I'm keep getting this error:
Syntax Error: SyntaxError: D:\xampp\htdocs\smart-school-v0.1\resources\js\components\Root.js: Support for the experimental syntax 'classProperties' isn't currently enabled (19:11):
17 |
18 |
> 19 | state = { foo: false };
| ^
20 |
21 | render() {
22 |
Add @babel/plugin-proposal-class-properties (https://git.io/vb4SL) to the 'plugins' section of your Babel config to enable transformation.
@ ./resources/js/app.js 14:0-28
@ multi ./resources/js/app.js ./resources/sass/app.scss
Asset Size Chunks
Chunk Names
/css/app.css 0 bytes /js/app [emitted] /js/app
/js/app.js 593 KiB /js/app [emitted] /js/app
ERROR in ./resources/js/components/Root.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: D:\xampp\htdocs\smart-school-v0.1\resources\js\components\Root.js: Support for the experimental syntax 'classProperties' isn't currently enabled (19:11):
Please help me out.
Thanks in advance.
Cretae .babelrc file in root folder.
Write in .babelrc:
{ "plugins": ["@babel/plugin-proposal-class-properties"] }
Run npm install --save-dev @babel/plugin-proposal-class-properties
Run npm run dev
Hope it will help you.
I just tested on Laravel Framework 5.7.19 and the following steps work:
.babelrc
file is in the root folder of your application, and add the following code:{
"plugins": ["@babel/plugin-proposal-class-properties"]
}
Run npm install --save-dev @babel/plugin-proposal-class-properties
.
Run npm run watch
.
Simple Add this to your
package.json
"babel": {
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With