运行生产版本时 React App 崩溃

IT技术 javascript node.js reactjs webpack netlify
2021-05-16 07:07:18

我可以在本地开发服务器上完美地运行我的 react-app(使用 create-react-app 样板),但是当我使用编译它npm run build然后用服务器运行它时(我尝试过 netlify 和本地 http-server),我只收到这个错误,页面没有加载:

classCallCheck.js:1 Uncaught RangeError: Maximum call stack size exceeded
    at Object.a (classCallCheck.js:1)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)

文件 Object.js 位于 src/Model/Objects/Object.js 下。

GitHub: https://github.com/Tracer1337/DynaSys
部署在 Netlify: https://youthful-mestorf-9e0ba8.netlify.com/

我做错了什么?

2个回答

这是一个有趣的调试。您似乎创建了一个名为 的类Object,它在 JavaScript 中是受保护的词。

您可以通过单击错误右侧的源来找出导致问题的原因。这将打开导致错误的相应文件(create-react-app默认情况下提供源映射,因此即使在生产中调试也不是问题)。

我通过将Object重命名为 解决了这个问题InternalObject,现在即使在生产模式下也一切正常!

至于为什么它在具有该受保护名称的开发模式下工作,我不知道。也许其他人有想法?

留在这里以供将来参考。我的 React 应用程序只在生产版本的一个特定屏幕上崩溃,但在开发环境中没有。

使用adb logcat *:E我设法将其追踪到错误的导入,这很可能是由于 vscode 的智能感知从错误的位置导入函数所致。

import { useState } from "react"我没有而是useState()"react/cjs/react.development". 有趣的是,useState()来自错误的文件实际上在开发版本中工作得很好(文件名可能暗示了原因)。