Reputation: 937
could you please tell me how to compile my react file written in es6 using babel ?
I tried like this my file
import React from 'react';
import { render } from 'react-dom';
class Abc extends React.Components{
render(){
return (
<div>dddd</div>
)
}
}
render(<Abc />, document.getElementById('root'));
package.json
package.json
{
"name": "ifscproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "babel reacfiles/app.js --presets react --out-file build/app.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"axios": "^0.18.0",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.3",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
"express": "^4.16.2",
"react": "^16.2.0",
"react-dom": "^16.2.0"
}
}
when I tried npm run build
it generate a new file
import React from 'react';
import { render } from 'react-dom';
class Abc extends React.Components {
render() {
return React.createElement(
'div',
null,
'dddd'
);
}
}
render(React.createElement(Abc, null), document.getElementById('root'));
it is converted react code, not es6 code why? could you please tel me how to convert es6 code also
Updates
when I used solution it gives update code
'use strict';
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Abc = function (_React$Components) {
_inherits(Abc, _React$Components);
function Abc() {
_classCallCheck(this, Abc);
return _possibleConstructorReturn(this, (Abc.__proto__ || Object.getPrototypeOf(Abc)).apply(this, arguments));
}
_createClass(Abc, [{
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
null,
'dddd'
);
}
}]);
return Abc;
}(_react2.default.Components);
(0, _reactDom.render)(_react2.default.createElement(Abc, null), document.getElementById('root'));
But when I run on server it gives me error
server.js
var express = require('express');
var React = require('react');
var ReactDOMServer = require('react-dom/server');
var App = require('./build/app');
var React = require('react');
var path = require('path');
var app = express();
// const indexPath = path.join(__dirname, 'index.html');
const publicPath = express.static(path.join(__dirname, './public'));
app.use(publicPath);
const port = process.env.PORT || 3000;
app.get('/get', function (req, res) {
res.send(App);
})
app.listen(port, function () {
console.log('Listening to port 3000');
})
Upvotes: 2
Views: 2632
Reputation: 685
You are missing the es2015 preset. Do the following:
Install es2015 preset with
npm install --save-dev babel-preset-es2015
Edit your build script to:
"build": "babel reacfiles/app.js --out-file build/app.js"
Create a .babelrc file (and define your presets there):
.babelrc
{ "presets": ["es2015", "react"] }
Upvotes: 3