我有一个使用Webpack和Babel的React项目。当我在办公室计算机上创建Webpack时,它运行良好。当我将项目克隆到个人计算机上时,它出现以下错误:
ERROR in ./react_minesweeper.jsx Module build failed: Error: Couldn't find preset "es2015" relative to directory "/Users/louisstephancruz/Desktop" at /Users/louisstephancruz/Desktop/w6d5/minesweeper/node_modules/babel-core/lib/transformation/file/options/option-manager.js:298:19 at Array.map (native) at OptionManager.resolvePresets (/Users/louisstephancruz/Desktop/w6d5/minesweeper/node_modules/babel-core/lib/transformation/file/options/option-manager.js:269:20)
这是我的webpack.config.js:
webpack.config.js
module.exports = { entry: './react_minesweeper.jsx', output: { path: './', filename: 'bundle.js', }, module: { loaders: [ { test: [/\.jsx?$/, /\.js?$/], exclude: /(node_modules)/, loader: 'babel', query: { presets: ['es2015', 'react'] } } ] }, devtool: 'source-map', resolve: { extensions: ['', '.js', '.jsx' ] } };
这是我的package.json:
package.json
{ "name": "minesweeper", "version": "1.0.0", "description": "", "main": "webpack.config.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "webpack-dev-server --inline" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "babel": "^6.5.2", "babel-core": "^6.17.0", "babel-loader": "^6.2.5", "babel-preset-es2015": "^6.16.0", "babel-preset-react": "^6.16.0", "webpack": "^1.13.2", "webpack-dev-server": "^1.16.2" }, "dependencies": { "react": "^15.3.2", "react-dom": "^15.3.2" } }
我的节点版本是:v5.6.0我的npm版本是:3.6.0
npm i 要么 npm install
npm i
npm install
应该在package.json依赖项和dev依赖项中安装所有软件包(只要您的NODE_ENV环境变量不等于production)。
NODE_ENV
production
要检查是否安装了特定的软件包,可以执行以下操作:
npm ls babel-preset-es2015
如果出于某种原因NODE_ENV,production并且您想安装dev依赖项,则可以使用:
npm install --only=dev
相反,以下代码可用于正在处理已经构建的代码且不需要访问任何开发依赖项的生产机器上:
npm install --only=prod
建议.babelrc您在仓库的根目录中创建一个包含以下内容的:
.babelrc
{ "presets": [ "es2015", "react" ] }
对于webpack配置,您可能需要指定其他一些选项:
{ context: __dirname , resolve: { root: __dirname, extensions: [ '.js', '.jsx', '.json' ] } }
除了配置的其余部分之外,这还告诉webpack捆绑的根目录应在哪里进行,以及将哪些文件扩展名视为模块(可以在require/ import语句中忽略哪些扩展名)。
require
import
我建议你检查出的WebPack的resolve.extensions关于该位的更多信息。