【问题标题】:How do I get webpack to transform the react production files?如何让 webpack 转换反应生产文件?
【发布时间】:2018-03-11 21:47:41
【问题描述】:

当我使用 webpack 与 React 16 捆绑我的应用程序时,我在浏览器中为 react 和 react-dom 收到“未捕获的 ReferenceError:require is not defined”。导致错误的资源是 react.production.min.js 和 react-dom.production.min.js(来自 node_modules/react/cjs)。当我检查这些文件时,我清楚地看到了作为错误来源的“需要”引用。 React 15.6.2(或更低版本)不会发生这种情况,因为生产包没有任何 require 调用。似乎 webpack 没有转换这些文件,我不知道为什么不。我已经谷歌和谷歌,重新阅读了 webpack 文档,我只是空手而归。我确定这是一个基本的 webpack 配置问题,但我就是不明白。我正在使用 webpack 3.6.0。完全相同的项目适用于 React 15.6.2(这似乎是合理的,因为那些生产包没有任何 require 调用)。这只是我创建“生产”捆绑包时的问题。在“开发模式”中,我使用 react-hot-loader(版本 3.0.0-beta.7)并且没有问题。开发和生产 webpack 配置共享完全相同的 module.rules,即:

config.module.rules = [
  // javascript
  {
    test: /\.jsx?$/,
    use: 'babel-loader',
    include: [path.join(__dirname, '../src/client'), path.join(__dirname, '../src/common')]
  },
];

如何让 webpack 转换 react 生产文件?我很惊讶我是唯一遇到这种情况的人......但有时我觉得 webpack 对我的控制比我对它的控制更多。任何提示将不胜感激。

【问题讨论】:

  • '这只是我创建“生产”包时的问题。'
  • 这发生在 Chrome 61.0.3163.79 和 Safari 11 中。没有尝试过 Firefox 或 Edge ......但我不认为这是浏览器问题。捆绑包没有正确构建

标签: reactjs webpack


【解决方案1】:

我知道这将是一个简单的解决方案:需要删除以下行

noParse: /\.min\.js/

来自文档:“防止 webpack 解析与给定正则表达式匹配的任何文件。被忽略的文件不应调用 import、require、define 或任何其他导入机制。”

出于某种原因,我已将这一点包括在内,这当然是显而易见的问题。令人惊奇的是,您可以盯着某物看几个小时却看不到最明显的东西。

【讨论】:

  • 根据github.com/facebook/react/issues/10294react/dist/react.min.js 更改为 react/umd/react.production.min.js 并默认从 'react/cjs/react.production 导出。 min.js'(有一堆'require')。等待有关此的官方文档。
猜你喜欢
  • 1970-01-01
  • 2017-03-20
  • 2017-10-07
  • 2020-08-15
  • 1970-01-01
  • 2016-04-06
  • 2017-12-08
  • 2020-05-09
  • 2019-11-16
相关资源
最近更新 更多