1. ホーム
  2. javascript

[解決済み] babel-nodeを実運用で使用しても問題ないか?

2023-04-18 12:02:19

質問

ES6構文に対応するために、babel-nodeとbabelify transformを使ったbrowserifyでサイトを開発しています。

私はちょうど不思議に思っているのですが、これを本番環境で次のように実行できますか? babel-node server ではなく node server nodeでES6を実行するために、他にどのようなオプションがあるのでしょうか?

以下は、私が開発中にビルドとスタートのために実行しているコマンドです。

// npm run build
browserify -t [babelify] client.js > public/js/bundle.js",

// npm start
babel-node server.js"

以下は私の開発環境です。

"babel": "^4.0.1",
"babelify": "^5.0.3",
"browserify": "^8.0.3"

どのように解決するのですか?

クライアント側のコードについて のように、正しいことを行っています。 babelify を作成し、それをクライアントに送信します。


サーバーサイドのコードについて を使用して、通常のビルドを行います。 babel-cli

によると http://babeljs.io/docs/setup/#babel_register , babel-register 製品用ではありません - requireフックは主にシンプルなケースで推奨されます。

Babel 6+ 用

Babel 6の時点では、デフォルトでトランスフォームが含まれていません。そこで、まず babel-clibabel-preset-es2015 .

$ npm install --save-dev babel-cli babel-preset-es2015

変換を追加して .babelrc ファイルに変換を追加します - これは上でダウンロードした prest モジュールです。を見てみましょう。 プリセットの完全なリスト を見て、どれがあなたに一番合うか確認してください。

{
  "presets": ["es2015"]
}

を追加する。 build スクリプトを package.json . 以下は src は入力ファイル、そして build は変換された出力ファイルです

"scripts": {
  "build": "babel src -d build"
}

では、ビルドしてみましょう

$ npm run build

次に、コードを実行します。この時点では、あなたの build ディレクトリにあるファイルを実行することになります。

$ npm start

Babel <= 5 の場合、require フックを使用するだけです。

require("babel/register");

node が必要とする後続のすべてのファイル(拡張子 .es6 , .es , .jsx そして .js はバベルで変換されます。その ポリフィル も自動的に必要となります。

ソースファイルをES6にしたまま、実行時に node server.js


あなたのコメントによると、あなたは少し問題を抱えているようです。特に上記の黄色くハイライトされた部分に注意してください。最初のファイルは、node 自身によって実行される ES5 のみです。すべて が必要です。 はBabelによって変換されます...

典型的なセットアップは以下のようなものです。

server.js

// only ES5 is allowed in this file
require("babel/register");

// other babel configuration, if necessary

// load your app
var app = require("./app.js");

app.js

// this file will be loaded through babel
// you can now use ES6 here and in every other include

ファイヤー・イット・アップ!

$ node server.js