javascript - 要求 ('babel/register' )不起作用

标签 javascript node.js express ecmascript-6 babeljs

我在客户端使用 ES6 编写了同构应用程序,带有 Babel transpiler .我希望我的快速服务器具有与客户端代码相同的 ES6 语法。

不幸的是 require('babel/register') 不起作用..

server.js

require('babel/register'); // doesn't work
// require('babel-core/register); doesn't work..

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);
});

最佳答案

自从 Babel 6 使用 babel-register hook进行即时转译。

第一:

 npm install babel-register

然后要求它:

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

将你的Ecmascript 6代码转换成ecmascript 5,你必须设置Babel presets需要 babel-register 的选项像这样:

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

@alexander-pustovalov 的答案不同你不需要 .babelrc 文件。

您还必须安装 babel-preset-es2015 :

npm install babel-preset-es2015

最后,您的 Server.js 文件将是:

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);
});

关于javascript - 要求 ('babel/register' )不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29207878/

相关文章:

javascript - 需要访问 Vue.js 中的数据元素

javascript - 我可以修改 Jquery 以根据返回的 URL 使用条件语句吗?

javascript - 为什么我的express.js 无法运行?

facebook 和 socket.io node.js

javascript - 有没有办法在字符串上有条件地引用诸如 .replace() 之类的函数?

node.js - 如何在生产模式下使用 npm 代理(如 package.json 中的 proxy 参数)?

javascript - onClick 和操作 html

javascript - Lodash 的纯 JavaScript 替换 `omit()`

通过 Node 窗口运行应用程序时,excel 解析器不工作

javascript - 让音频适用于所有浏览器