Babelファイルは変換されずにコピーされます


106

私はこのコードを持っています:

"use strict";

import browserSync from "browser-sync";
import httpProxy from "http-proxy";

let proxy = httpProxy.createProxyServer({});

そして私はnpmを介してグローバルにインストールbabel-coreしましたbabel-cli。ポイントは、私がこれを私のターミナルでコンパイルしようとするときです:

babel proxy.js --out-file proxified.js

出力ファイルはコンパイルされる代わりにコピーされます(つまり、ソースファイルと同じです)。

ここで何が欠けていますか?


let変更はありますvarが、importステートメントは残りますか?
runspired、2015年

新しいバージョンのreactの場合、新しいbabelモジュールを使用します:stackoverflow.com/a/53927457/6665568 。エラーメッセージが改善され、reactの新機能がサポートされます。
Natesh bhat

回答:


165

Babelは変換フレームワークです。6.xより前のバージョンでは、特定の変換がデフォルトで有効になりましたが、多くのES6機能をネイティブでサポートするNodeバージョンの使用が増加したため、構成可能であることがはるかに重要になりました。デフォルトでは、Babel 6.xは変換を実行しません。実行する変換を指示する必要があります。

npm install babel-preset-env

そして走る

babel --presets env proxy.js --out-file proxified.js

またはを.babelrc含むファイルを作成します

{
    "presets": [
        "env"
    ]
}

以前と同じように実行します。

envこの場合、基本的にはすべての標準ES *動作をES5にコンパイルするように指示するプリセットです。一部のES6をサポートするノードバージョンを使用している場合は、

{
    "presets": [
        ["env", { "targets": { "node": "true" } }],
    ]
}

ノードバージョンでサポートされていないもののみを処理するようにプリセットに指示します。ブラウザのサポートが必要な場合は、ターゲットにブラウザのバージョンを含めることもできます。


15
これは便利です。なぜ彼らはこれをドキュメントに入れなかったのですか?グローバルにbabel-presetをインストールしても安全ですか?
kidcapital 2015年

@kidcapitalドキュメントにはこれが含まれていますが、副次的なメモとしてのみ表示されます。最初にリリースされたときに、Babel 6.0を適切に構成する方法を理解するために多くの時間を費やしました。
2015年

この投稿の要旨は、PR#72に従ってセットアップページの情報ボックスとして追加されました。非常に小さな改善ですが、どこかから始めなければなりません!ローガン、ありがとう。
2015年

7
設定よりも慣例としては...箱から出しても、Babelは何もせず、ファイルをコピーするだけですか?
alex.p 2016年

誰かが答えられるように、セットアップに関するすべての情報を記載した新しい質問をしてください。
loganfsmyth 2017年

5

これらの答えのほとんどは時代遅れです。@babel/preset-envそして"@babel/preset-reactあなたは(2019年7月現在)必要なものです。


3

私は別の原因で同じ問題を抱えていました:

ロードしようとしたコードはパッケージディレクトリの下にありませんでした。また、Babelはデフォルトでパッケージディレクトリの外にトランスパイルしません。

インポートしたコードを移動することで解決しましたが、Babel構成で何らかのインクルージョンステートメントを使用した可能性もあります。


詳しく説明してもらえますか?私のフロントエンドコードも「パッケージディレクトリの下」ではなく、正常に動作します。私のサーバーコードには「インポート」が含まれていますが、babel-cliはそれらを解決していません...
フィリップ

うーん、何を詳しく説明したらいいのかわからない?バベルは蒸散していなかった。Babel configのすべてのソースを見てみてください…
w00t

私が解決しようとしている問題は、サーバーファイルがいくつかのフォルダーに整理されていることです。servers.jsがあり、次に/ api / ... stuff ...メモリから実行すると、それぞれの「インポート」または「要求」それらのファイルで動的に解決されています。コマンドラインからbabelを実行すると、1つのファイルのみが出力されますが、相対インポートは解決されないため、それを使用してサーバーを実行することはできません...
Philippe

3

まず、次のものがあることを確認しますnode modules

npm i -D webpack babel-core babel-preset-es2015 babel-preset-stage-2 babel-loader

次に、あなたのWebPACKのにこれを追加設定(ファイルwebpack.config.js):

// webpack.config.js
...
module  :  {
  loaders  :  [
    {
      test    :  /\.js$/,
      loader  :  'babel',
      exclude :  /node_modules/,
      options :  {
        presets  :  [ 'es2015', 'stage-2' ] // stage-2 if required
      } 
    } 
  ]
}
...

参照:

幸運を!


2

現在 2020, Jan

ステップ1:インストールBabel presets

yarn add -D @babel/preset-env @babel/preset-react

ステップ2:ファイルを作成し、次babelrc.jsを追加しpresetsます:

module.exports = {
  // ...
  presets: ["@babel/preset-env", "@babel/preset-react"],
  // ...
}

ステップ3:-インストールbabel-loader

yarn add -D babel-loader

ステップ4:-にローダー設定を追加しますwebpack.config.js

{
//...
  module: [
    rules: [
      test: /\.(js|mjs|jsx|ts|tsx)$/,
      loader: require.resolve('babel-loader')
    ]
  ]
//...
}

幸運を...



1

同じエラー、別の原因:

トランスパイリングは以前は機能していましたが、突然機能しなくなり、ファイルはそのままコピーされました。

.babelrcある時点でを開いて、Windows .txtがファイル名に追加することにしました。今で.babelrc.txtはそれはバベルに認識されませんでした。.txt接尾辞を削除することで修正されました。


0

.babelrcを修正する

{
  "presets": [
    "react",
    "ES2015"
  ]
}

0

2018年:

次のパッケージをまだインストールしていない場合はインストールします。

npm install babel-loader babel-preset-react

webpack.config.js

{
    test: /\.jsx?$/,
    exclude: /node_modules/,
    use: [
      {
        loader: 'babel-loader',
        options: {
          presets: ['es2015','react']  // <--- !`react` must be part of presets!
        }
      }
    ],
  }

0

究極のソリューション

これで3日も無駄に

import react from 'react' unexpected identifier

を介してファイルの変更webpack.config.jspackage.json追加.babelrc、インストール、更新を試みnpmましたが、多くのページにアクセスしましたが、何も機能しませんでした。


何がうまくいったのですか?2つの単語:npm start。そのとおり。

実行する

npm start 

ターミナルでローカルサーバーを起動するコマンド

...

(それはすぐに動作しない場合がありますことを心が、おそらく外にこれをしようとする前に、私はそれらのファイル内のすべての変更を削除していたし、それが働いていたので、あなたがNPMにいくつかの作業を行うだけで後にあなたの最後としてそれを扱い、あなたが本当に終わった後、リゾート


私はこのきちんとしたページでその情報を見つけました。ポーランド語ですが、Google翻訳を自由に使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.