require('babel/register') doesn't work require('babel/register') doesn't work express express

require('babel/register') doesn't work


Since Babel 6 use babel-register hook to make on-the-fly transpilation.

First:

 npm install babel-register

Then require it with:

require('babel-register');    // not using // require('babel/register');// or // require('babel-core/register);

To Convert your Ecmascript 6 code to ecmascript 5, you must set Babel presets option with require babel-register Like this:

require('babel-register')({  presets: [ 'es2015' ]});

Unlike the answer of @alexander-pustovalov you do not need to .babelrc file.

you must also install babel-preset-es2015:

npm install babel-preset-es2015

Finally your Server.js file will be:

require('babel-register')({   presets: [ 'es2015' ]});const env = process.env.NODE_ENV || 'development';const port = process.env.NODE_PORT || 1995;const http = require('http');const express = require('express');const address = require('network-address');let app = express();app.set('port', port);app.use(express.static(path.join(__dirname, 'public')));app.get('*', (req, res) => {   res.send('Hello!');});http.createServer(app).listen(app.get('port'), function () {   console.info('Demo app is listening on "%s:%s" env="%s"', address(), app.get('port'), env);});


require('babel/register') doesn't transpile the file it is called from. If you want server.js to be included in on-the-fly transpilation, you should execute it with babel-node (Babel's CLI replacement for node).

See my answer here for an example.


I ran into a similar issue trying to render a react page (.jsx) on the server.I fixed it by putting the snippet below at the top of my server file

require('babel-register')({    presets: ['es2015', 'react']});

make sure you have npm babel-preset-es2015 and babel-preset-react installed