我在客户端使用 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/