私はこのコードを持っています:
"use strict";
import browserSync from "browser-sync";
import httpProxy from "http-proxy";
let proxy = httpProxy.createProxyServer({});
babel-core
とbabel-cli
をnpm経由でグローバルにインストールしました。ポイントは、私の端末でこれでコンパイルしようとするときです:
babel proxy.js --out-file proxified.js
出力ファイルはコンパイルされずにコピーされます(つまり、ソースファイルと同じです)。
ここで何が欠けていますか?
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をサポートするNodeバージョンを使用している場合は、次のことを検討してください。
{
"presets": [
["env", { "targets": { "node": "true" } }],
]
}
Nodeバージョンでサポートされていないもののみを処理するようにプリセットに指示します。ブラウザのサポートが必要な場合は、ターゲットにブラウザのバージョンを含めることもできます。
私は別の原因で同じ問題を抱えていました:
ロードしようとしたコードはパッケージディレクトリの下になく、Babelはパッケージディレクトリの外部でのデフォルトのトランスコンパイルを行いません。
インポートしたコードを移動することで解決しましたが、おそらく、Babel構成に包含ステートメントを使用することもできたでしょう。
まず、次のnode modules
があることを確認します。
npm i -D webpack babel-core babel-preset-es2015 babel-preset-stage-2 babel-loader
次に、これをWebpackconfigファイル(webpack.config.js
)に追加します。
// webpack.config.js
...
module : {
loaders : [
{
test : /\.js$/,
loader : 'babel',
exclude : /node_modules/,
options : {
presets : [ 'es2015', 'stage-2' ] // stage-2 if required
}
}
]
}
...
参照:
幸運を!
npm install --save-dev babel-preset-node5
npm install --save-dev babel-preset-react
...そして、.babelrc
をプリセットで作成します:
{
"presets": [
"node5",
"react"
]
}
...私にとって非常によく似た問題を解決しました。babel 3.8.6
とnode v5.10.1
https://www.npmjs.com/package/babel-preset-node5
https://www.npmjs.com/package/babel-preset-react
同じエラー、異なる原因:
トランスパイリングは以前に機能していましたが、突然機能しなくなり、ファイルがそのままコピーされました。
ある時点で.babelrc
を開き、Windowsは.txt
をファイル名に追加することにしました。 .babelrc.txt
はbabelに認識されませんでした。 .txt
接尾辞を削除すると修正されました。
.babelrcを修正する
{
"presets": [
"react",
"ES2015"
]
}
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!
}
}
],
}
これらの答えのほとんどは時代遅れです。 @babel/preset-env
と"@babel/preset-react
が必要です(2019年7月現在)。
最終的な解決策
これで3日無駄にした
import react from 'react' unexpected identifier
webpack.config.js
およびpackage.json
ファイルを変更し、.babelrc
を追加し、npm
を介してパッケージをインストールおよび更新しようとしましたが、多くのページを訪れましたが、何も機能しませんでした。
何が効いた? 2つの単語:npm start。そのとおり。
を実行
npm start
ターミナルのコマンドはローカルサーバーを起動します
...
(すぐに動作しないかもしれませんが、おそらくnpmでいくつかの作業を行った後にのみ、これを試す前にそれらのファイルのすべての変更を削除し、動作したので、 本当に完了したら、それを最後の手段として扱います)
このきちんとしたページ でその情報を見つけました。ポーランド語ですが、Google翻訳を自由に使用できます。