当前位置: 首页 > 知识库问答 >
问题:

难以处理错误:缩小的React错误#321-ReactJS

狄宏大
2023-03-14

我正在构建React应用程序,突然出现以下错误:

错误:缩小的反应错误#321;访问 https://reactjs.org/docs/error-decoder.html?invariant=321 以获取完整消息,或使用未缩小的开发环境获取完整错误和其他有用的警告。

现在,我应用程序只显示了位于App.js中的绿色圆圈按钮,React中构建的网站的其余部分什么也没有显示(白页)。

当我尝试将一些.mp4视频上传到服务器时,更新代码后立即发生这种情况。我访问了 https://reactjs.org/docs/error-decoder.html/?invariant=321 以获取完整的消息详细信息,并检查了3个可能的原因:

  1. 您可能有不匹配的React版本和渲染器(例如React DOM)
  2. 你可能违反了钩子的规则
  3. 您可能在同一个应用程序中拥有多个React副本

我验证了这3个原因中的每一个,并且似乎很好。

你以前处理过类似的事情吗?你是如何解决的?你知道如何调试错误吗?

我感谢任何帮助,如果您需要有关代码或问题的更多详细信息,请询问。

共有2个答案

关飞翔
2023-03-14

事情是你的库使用了< code>sample-testing,它是以一种非常奇怪的方式构建的,特别是< code>TButton组件,它在模块内包含了< code>React v16.8.6,但它使用了< code>commonjs样式,如下所示:

module.exports = {}

// React has been included here which is very wrong way
/** @license React v16.8.6
 * react.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var r=n(4)
// ...

如果编写库来导出React组件,您只需将它们构建为具有通用js样式的单独文件。不要像上面那样包含应该包含在使用您的库的父应用程序中的React

您构建的组件看起来很像这样:

TButton.js

const TButton = (props) => {
  // ...
}

exports.default = TButton;
颛孙和悌
2023-03-14

经过大量调试,我发现这个问题是由库mdbreact的某些函数引起的

// package.json

"dependencies": {
   ...
   "mdbreact": "git+https://oauth2:YOUR_TOKEN@git.mdbootstrap.com/mdb/react/re-pro.git"
   ...
}

我有专业版的库,默认情况下,它会自动更新。我使用的是4.27.0版本,一切正常,然后当他们将库更新到新的5.0.0版本时,我的应用程序爆炸了。这很难调试,因为只发生在生产端。

我解决了将库降级到4.27.0版本的问题,只是在依赖项末尾添加#4.27.0

// package.json

"dependencies": {
   ...
   "mdbreact": "git+https://oauth2:YOUR_TOKEN@git.mdbootstrap.com/mdb/react/re-pro.git#4.27.0"
   ...
}

我将保留这个版本,直到他们提交这些特定功能的修复。感谢@tmhhao2005给了我研究的指南。希望它能帮助其他有类似错误的人!

 类似资料:
  • 我正在尝试创建一些带有少量自定义更改的反应组件作为包并发布到npm中,以便其他项目可以通过导入包来使用它们。 我的软件包是“样本测试”,可在(https://www.npmjs.com/package/sample-testing). 使用“webpack”和“babel loader”来处理jsx文件。 当我试图使用此包中的组件时,出现以下错误。 缩小的反应错误#321;访问 https://r

  • 问题内容: 有最紧迫的时间试图弄清楚为什么缩小不起作用。 我已经通过数组对象在网络上根据大量建议在函数之前注入了我的提供者,但仍然是“未知提供者:aProvider <-a” 定期: 缩小: 任何建议将是必须的! 问题答案: AndrewM96的建议是正确的。 对齐和空格对于Uglify和Angular都很重要。

  • 通过对错误类型实现 Display 和 From,我们能够利用上绝大部分标准库错误处理工具。然而,我们遗漏了一个功能:轻松 Box 我们错误类型的能力。 标准库会自动通过 Form 将任意实现了 Error trait 的类型转换成 trait 对象 Box<Error> 的类型(原文:The std library automatically converts any type that imp

  • 我的文件中有以下ReactJs组件/我的输入。反应js 现在我试着把它导入到。/index.js像这样: 控制台将返回错误: 您刚才遇到的错误全文如下: 这有什么错?

  • 错误处理(error handling)是处理可能发生失败情况的过程。例如读取一个文件失败,然后继续使用这个失效的输入显然是有问题的。错误处理允许我们以一种显式的方式来发现并处理这类错误,避免了其余代码发生潜在的问题。 有关错误处理的更多内容,可参考官方文档的错误处理的章节。

  • 处理一个 RESTful API 请求时, 如果有一个用户请求错误或服务器发生意外时, 你可以简单地抛出一个异常来通知用户出错了。 如果你能找出错误的原因 (例如,所请求的资源不存在),你应该 考虑抛出一个适当的HTTP状态代码的异常 (例如, yii\web\NotFoundHttpException意味着一个404 HTTP状态代码)。 Yii 将通过HTTP状态码和文本发送相应的响应。 它还