[解決済み] babel-loader jsx SyntaxError: 予期しないトークン [重複] が発生しました。
質問
React + Webpackの初心者です。
Hello WorldのWebアプリで変なエラーを見つけました。
webpackでbabel-loaderを使ってjsxからjsに変換しているのですが、babelはjsxの構文を理解できないようです。
以下は私の依存関係です。
"devDependencies": {
"babel-core": "^6.0.14",
"babel-loader": "^6.0.0",
"webpack": "^1.12.2",
"webpack-dev-server": "^1.12.1"
},
"dependencies": {
"react": "^0.14.1"
}
以下は私の
webpack.config.js
var path = require('path');
module.exports = {
entry: ['webpack/hot/dev-server',path.resolve(__dirname, 'app/main.js')],
output: {
path: path.resolve(__dirname, 'build'),
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
}
};
以下は私の
app/main.js
var React = require("react");
React.render(<h1>hello world</h1>,document.getElementById("app"));
そして、これがエラーメッセージです。
ERROR in ./app/main.js
Module build failed: SyntaxError: ~/**/app/main.js: Unexpected token (2:13)
1 | var React = require("react");
> 2 | React.render(<h1>hello world</h1>,document.getElementById("app"));
| ^
at Parser.pp.raise (~/**/node_modules/babylon/lib/parser/location.js:24:13)
ありがとうございました。
解決方法は?
babel-preset-react" を追加します。
npm install babel-preset-react
を追加し、webpack.config.js の babel-loader に "presets" オプションを追加してください。
(または、.babelrc や package.js に追加してください。 http://babeljs.io/docs/usage/babelrc/ )
webpack.config.jsの例です。
{
test: /\.jsx?$/, // Match both .js and .jsx files
exclude: /node_modules/,
loader: "babel",
query:
{
presets:['react']
}
}
最近、Babel 6がリリースされ、大きな変更がありました。 https://babeljs.io/blog/2015/10/29/6.0.0
react 0.14を使用している場合、以下のようになります。
ReactDOM.render()
(から)。
require('react-dom')
の代わりに
React.render()
:
https://facebook.github.io/react/blog/#changelog
UPDATE 2018
Rule.queryはすでに非推奨となり、Rule.optionsが採用されています。webpack 4 での使い方は以下の通りです。
npm install babel-loader babel-preset-react
そして、webpack の設定(module.exports オブジェクトの module.rules 配列のエントリとして)。
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['react']
}
}
],
}
関連
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】最大呼び出しスタックサイズ超過エラーとその修正方法とは?
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] React JSX内のループ
-
[解決済み] Babel 6 regeneratorRuntimeが定義されていません。
-
[解決済み] Node.js - SyntaxError: 予期しないトークンのインポート
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする