我的 Webpack 配置有什么问题?
What's wrong with my Webpack config?
我开始将 Webpack 用于学生项目,但我一直无法配置 Webpack 以包含 React 和 Babel。这是我的节点包:
+-- babel-core@6.18.0
+-- babel-loader@6.2.5
+-- babel-polyfill@6.16.0
+-- babel-preset-es2015@6.18.0
+-- react@15.3.2
+-- react-dom@15.3.2
`-- webpack@1.13.2
...还有我的 webpack 配置文件:
module.exports = {
entry: ['babel-polyfill', './src/index.jsx'],
output: {
path: './build',
filename: 'app.bundle.js'
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['es2015', 'react']
}
}
]
}
};
但是 webpack
命令显示了这个错误:
ERROR in ./src/index.jsx
Module build failed: ReferenceError: [BABEL] C:\wamp\www\tripfighter\src\index.jsx: Unknown option: C:\wamp\www\tripfighter\node_modules\react\react.js.Children. Check out http://babeljs.io/docs/usage/options/ for more information about options.
A common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:
Invalid:
`{ presets: [{option: value}] }`
Valid:
`{ presets: ['pluginName', {option: value}] }`
For more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options. (While processing preset: "C:\wamp\www\tripfighter\node_modules\react\react.js")
at Logger.error (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\logger.js:41:11)
at OptionManager.mergeOptions (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:221:20)
at C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:260:14
at C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:329:22
at Array.map (native)
at OptionManager.resolvePresets (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:270:20)
at OptionManager.mergePresets (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:259:10)
at OptionManager.mergeOptions (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:244:14)
at OptionManager.init (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:374:12)
at File.initOptions (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\index.js:216:65)
at new File (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\index.js:139:24)
at Pipeline.transform (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\pipeline.js:46:16)
at transpile (C:\wamp\www\tripfighter\node_modules\babel-loader\index.js:38:20)
at Object.module.exports (C:\wamp\www\tripfighter\node_modules\babel-loader\index.js:131:12)
@ multi main
(有我的样本index.jsx文件)
import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
import cats from './cats.js';
console.log(cats);
所以问题似乎出在我的webpack.config.js,但我不知道为什么,尽管我在网上搜索了很多例子。
你能帮助我吗 ?谢谢!
您的配置是
presets: ['es2015', 'react']
但您安装的唯一预设是
+-- babel-preset-es2015@6.18.0
所以你的答案是
npm install --save-dev babel-preset-react
编辑:
仅供参考,Babel 7(发布时)对此给出了更清晰的错误消息,因此这些情况下的生活会更轻松。
您可以通过 运行 以下命令删除此错误:
npm install --save-dev babel-preset-react
我开始将 Webpack 用于学生项目,但我一直无法配置 Webpack 以包含 React 和 Babel。这是我的节点包:
+-- babel-core@6.18.0
+-- babel-loader@6.2.5
+-- babel-polyfill@6.16.0
+-- babel-preset-es2015@6.18.0
+-- react@15.3.2
+-- react-dom@15.3.2
`-- webpack@1.13.2
...还有我的 webpack 配置文件:
module.exports = {
entry: ['babel-polyfill', './src/index.jsx'],
output: {
path: './build',
filename: 'app.bundle.js'
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['es2015', 'react']
}
}
]
}
};
但是 webpack
命令显示了这个错误:
ERROR in ./src/index.jsx
Module build failed: ReferenceError: [BABEL] C:\wamp\www\tripfighter\src\index.jsx: Unknown option: C:\wamp\www\tripfighter\node_modules\react\react.js.Children. Check out http://babeljs.io/docs/usage/options/ for more information about options.
A common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:
Invalid:
`{ presets: [{option: value}] }`
Valid:
`{ presets: ['pluginName', {option: value}] }`
For more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options. (While processing preset: "C:\wamp\www\tripfighter\node_modules\react\react.js")
at Logger.error (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\logger.js:41:11)
at OptionManager.mergeOptions (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:221:20)
at C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:260:14
at C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:329:22
at Array.map (native)
at OptionManager.resolvePresets (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:270:20)
at OptionManager.mergePresets (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:259:10)
at OptionManager.mergeOptions (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:244:14)
at OptionManager.init (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\options\option-manager.js:374:12)
at File.initOptions (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\index.js:216:65)
at new File (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\file\index.js:139:24)
at Pipeline.transform (C:\wamp\www\tripfighter\node_modules\babel-core\lib\transformation\pipeline.js:46:16)
at transpile (C:\wamp\www\tripfighter\node_modules\babel-loader\index.js:38:20)
at Object.module.exports (C:\wamp\www\tripfighter\node_modules\babel-loader\index.js:131:12)
@ multi main
(有我的样本index.jsx文件)
import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
import cats from './cats.js';
console.log(cats);
所以问题似乎出在我的webpack.config.js,但我不知道为什么,尽管我在网上搜索了很多例子。 你能帮助我吗 ?谢谢!
您的配置是
presets: ['es2015', 'react']
但您安装的唯一预设是
+-- babel-preset-es2015@6.18.0
所以你的答案是
npm install --save-dev babel-preset-react
编辑:
仅供参考,Babel 7(发布时)对此给出了更清晰的错误消息,因此这些情况下的生活会更轻松。
您可以通过 运行 以下命令删除此错误:
npm install --save-dev babel-preset-react