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

前端 未结 8 1256
春和景丽
春和景丽 2020-12-01 07:01

I have isomorphic app written in ES6 on client with Babel transpiler. I want my express server to have the same ES6 syntax as client code.

Unfortunately requi

相关标签:
8条回答
  • 2020-12-01 08:00

    According to this document you have to use:

    require("babel-register");
    

    Additionally, you have to put .babelrc file in the root of directory from which you start server.

    {
      "presets": ["es2015"]   
    }
    
    0 讨论(0)
  • 2020-12-01 08:05

    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);
    });
    
    0 讨论(0)
提交回复
热议问题