クライアント上でES6で Babel transpiler で記述された同形アプリを使用しています。エクスプレスサーバーには、クライアントコードと同じES6構文を使用します。
残念ながらrequire('babel/register')
は機能しません。
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);
ToEcmascript 6
コードをecmascript 5
に変換するには、 Babel presets
require 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);
});
サーバーで反応ページ(.jsx)をレンダリングしようとすると、同様の問題が発生しました。サーバーファイルの先頭に以下のスニペットを配置して修正しました
require('babel-register')({
presets: ['es2015', 'react']
});
npmがあることを確認してくださいbabel-preset-es2015
およびbabel-preset-react
インストール済み
これによると document を使用する必要があります:
require("babel-register");
また、サーバーを起動するディレクトリのルートに.babelrcファイルを配置する必要があります。
{
"presets": ["es2015"]
}
2019年の前夜には、JS関連のライブラリにはまだ良いドキュメントがありませんが、一方で、そのためのStackOverflowがあります。
Node.jsでbabel
を使用するには、次のことが必要です。
npm install @babel/register @babel/core @babel/preset-env
pre-index.js
を作成しますnode pre-index
を実行しますimport
sおよびその他の機能は、index.js
およびimport
sまたはrequire
sでのみ使用できます。
require('@babel/register')({
presets: [
[
"@babel/preset-env",
{
targets: {
node: "current"
}
}
]
]
});
require('./index.js');
これを修正する手順:
require('babel/register');
を削除しますstart.jsで、
require('babel/register'); module.exports = require('./server.js');
その結果、server.js内のすべてのコードは、レジスタによってオンザフライで変換されます。以下のような内容の.babelrcでbabelを正しく設定したことを確認してください
{
"presets": ["es2015", "stage-0"]
}