当我使用webpack将我的应用程序与React 16捆绑在一起时,我在浏览器中获得了“未捕获的ReferenceError:require未定义”的反应和react-dom。导致错误的资源是react.production.min.js和react-dom.production.min.js(来自node_modules / react / cjs)。当我检查这些文件时,我清楚地看到了作为错误来源的“require”引用。 React 15.6.2(或更低版本)不会发生这种情况,因为生产捆绑包没有任何需求调用。似乎webpack没有改变那些文件,我不知道为什么不。我谷歌和谷歌,重新阅读webpack文档,我只是空手而归。我确定这是一个基本的webpack配置问题,但我只是没有得到它。我正在使用webpack 3.6.0。 React 15.6.2完全相同的项目(这似乎是合理的,因为那些生产包没有任何需求调用)。当我创建“生产”包时,这只是一个问题。在“开发模式”中,我使用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转换反应生成文件?我很惊讶我是唯一一个遇到这个问题的人......但有时我觉得webpack对我有更多的控制权。任何提示都会非常感激。
答案 0 :(得分:10)
我知道这将是一个简单的解决方案:需要删除以下行
noParse: /\.min\.js/
来自文档:"防止webpack解析与给定正则表达式匹配的任何文件。忽略的文件不应该调用导入,要求,定义或任何其他导入机制。"
由于某些原因,我把这个问题包括在内,这个问题当然是显而易见的。令人惊讶的是,你可以盯着某些东西几个小时,而不是看到最明显的东西。