javascript - 为什么 'Error: Couldn' t 在 ReactJS for React Hot Loader 中找到相对于目录的预设 "react-hot"...”?

标签 javascript node.js reactjs webpack react-hot-loader

我正在尝试让 React Hot Reloader 适用于我的 ReactJS 项目,但收到错误错误:找不到相对于目录的预设“react-hot”...

我确实在 .babelrc 中设置了预设“react-hot”,但问题可能是什么?我进行了以下设置:

在我的package.json中:

{
  "name": "practicing_client",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js"
  },
  "author": "John Bana",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.14.0",
    "react": "^15.3.1",
    "react-cookie": "^0.4.8",
    "react-dom": "^15.3.1",
    "react-redux": "^4.4.5",
    "react-router": "^2.7.0",
    "redux": "^3.6.0",
    "redux-form": "^6.0.0-rc.3",
    "redux-thunk": "^2.1.0"
  },
  "devDependencies": {
    "babel-core": "^6.14.0",
    "babel-loader": "^6.2.5",
    "babel-preset-es2015": "^6.14.0",
    "babel-preset-react": "^6.11.1",
    "babel-preset-stage-0": "^6.5.0",
    "css-loader": "^0.25.0",
    "extract-text-webpack-plugin": "^1.0.1",
    "node-sass": "^3.9.3",
    "react-hot-loader": "^3.0.0-beta.3",
    "sass-loader": "^4.0.1",
    "style-loader": "^0.13.1",
    "webpack": "^1.13.2",
    "webpack-dev-server": "^1.15.1"
  }
}

在我的webpack.config.js

const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

const config = {
  context: __dirname,
  entry: './src/index.js',
  output: {
    path: __dirname,
    filename: 'bundle.js'
  },
  module: {
    loaders: [{
      exclude: /node_modules/,
      test: /\.(js|jsx)$/,
      loader: 'babel'
    },
    {
      test: /\.scss$/,
      loader: ExtractTextPlugin.extract('css!sass')
    }]
  },
 devServer: {
    historyApiFallback: true,
    contentBase: './'
  },
  plugins: [
    new webpack.DefinePlugin({ 'process.env':{ 'NODE_ENV': JSON.stringify('production') } }),
    new webpack.optimize.DedupePlugin(),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.optimize.UglifyJsPlugin({
      compress: { warnings: false },
      output: {comments: false },
      mangle: false,
      sourcemap: false,
      minimize: true,
      mangle: { except: ['$super', '$', 'exports', 'require', '$q', '$ocLazyLoad'] }
    }),
  ]
};

module.exports = config;

在我的.babelrc中:

{
  "presets": ["react-hot", "react", "es2015", "stage-0"]
}

最佳答案

react-hot-loader 不被 Babel 使用,它被 Webpack 使用。

从 Babel 预设中删除 react-hot,然后将加载器添加到 Webpack 配置文件中:

loaders: [{
  exclude: /node_modules/,
  test: /\.(js|jsx)$/,
  loaders: ['react-hot', 'babel']
},

关于javascript - 为什么 'Error: Couldn' t 在 ReactJS for React Hot Loader 中找到相对于目录的预设 "react-hot"...”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376923/

相关文章:

javascript - 使用 Javascript 生成 PDF 和 Excel(客户端)

javascript - npm --> 错误 : Cannot find module 'readable-stream'

javascript - 如何将 map() 与来自 axios 响应的数据一起使用?

javascript - 将数值更改为文本 - jQuery/NivoSlider

javascript - 带有包含文本字段的 "other"选项的 AngularJS 单选按钮组

javascript - 当同级 div 收缩或扩展时,保持 div 中的滚动位置?

java - Java 到 NodeJS 的通信?

node.js - 强制请求使用/etc/hosts

javascript - 箭头函数 "this"绑定(bind)在 React 组件中不起作用

javascript - 条件渲染,重复次数更少