[解決済み] babel-nodeを実運用で使用しても問題ないか?
質問
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-cli
と
babel-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
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Babel 6 regeneratorRuntimeが定義されていません。
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる