Javascript 运行生产版本时,React应用程序崩溃
我可以在本地开发服务器上使用create react app样板文件运行我的react app,但当我使用npm run build编译它,然后在我尝试netlify和本地http服务器的服务器上运行它时,我只收到此错误,页面未加载:Javascript 运行生产版本时,React应用程序崩溃,javascript,node.js,reactjs,webpack,netlify,Javascript,Node.js,Reactjs,Webpack,Netlify,我可以在本地开发服务器上使用create react app样板文件运行我的react app,但当我使用npm run build编译它,然后在我尝试netlify和本地http服务器的服务器上运行它时,我只收到此错误,页面未加载: classCallCheck.js:1 Uncaught RangeError: Maximum call stack size exceeded at Object.a (classCallCheck.js:1) at e (Object.js:
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:
部署在Netlify上:
我做错了什么?这是一个需要调试的有趣的问题。看起来您已经创建了一个名为Object的类,它在JavaScript中是一个受保护的单词 您可以通过单击错误右侧的源来找出问题的原因。这将打开导致错误的相应文件create react app默认提供源映射,因此即使在生产环境中调试也不是问题 我通过将对象类重命名为InternalObject解决了这个问题,现在即使在生产模式下,一切都运行良好
至于为什么它在开发模式下使用这个受保护的名称,我不知道。也许其他人有一个想法?这是一个需要调试的有趣想法。看起来您已经创建了一个名为Object的类,它在JavaScript中是一个受保护的单词 您可以通过单击错误右侧的源来找出问题的原因。这将打开导致错误的相应文件create react app默认提供源映射,因此即使在生产环境中调试也不是问题 我通过将对象类重命名为InternalObject解决了这个问题,现在即使在生产模式下,一切都运行良好
至于为什么它在开发模式下使用这个受保护的名称,我不知道。也许其他人有想法?将此留在此处供将来参考。我的React应用程序只在生产构建的一个特定屏幕上崩溃,但在开发环境中没有 使用adb logcat*:E,我成功地跟踪到一个错误的导入,很可能是由于vscode的intellisense从错误的位置导入函数引起的
我不是从react导入{useState},而是从react/cjs/react.development导入useState函数。有趣的是,错误文件中的useState实际上在开发构建中工作得很好。文件名可能暗示了原因。将此保留在此处供将来参考。我的React应用程序只在生产构建的一个特定屏幕上崩溃,但在开发环境中没有 使用adb logcat*:E,我成功地跟踪到一个错误的导入,很可能是由于vscode的intellisense从错误的位置导入函数引起的
我不是从react导入{useState},而是从react/cjs/react.development导入useState函数。有趣的是,错误文件的useState实际上在开发构建中运行得很好。文件名可能暗示了原因。在构建或尝试运行服务器时,您是否会遇到此错误?@ErnestoStifano在浏览器中运行构建时这通常是由深度递归引起的。您的应用程序正在加载并启动,但您的浏览器在发现一些代码调用太多函数而未停止后放弃。使用浏览器的探查器查看调用了哪些函数,和/或使用调试器设置断点并逐步执行调用,直到调用中断,以找出卡住的地方。@rickdenhaan这就是问题所在。我不知道如何调试它,因为这只发生在react应用程序构建时,而不是在dev模式=>npm startYour应用程序完全在debian中构建时。您是否在Windows中?在生成或尝试运行服务器时是否会出现此错误?@ErnestoStifano在浏览器中运行生成时这通常是由深度递归引起的。您的应用程序正在加载并启动,但您的浏览器在发现一些代码调用太多函数而未停止后放弃。使用浏览器的探查器查看调用了哪些函数,和/或使用调试器设置断点并逐步执行调用,直到调用中断,以找出卡住的地方。@rickdenhaan这就是问题所在。我不知道如何调试它,因为这只发生在react应用程序构建时,而不是在dev模式=>npm startYour应用程序完全在debian中构建时。你在Windows中吗?@omnidan也许开发模式没有使用严格的,不确定though@mqklin我在考虑这个问题,但这不应该导致无限循环和未捕获的RangeError:超出了最大调用堆栈大小error@omnidan也许开发模式没有使用严格的,不确定though@mqklin我在想,但这不应导致无限循环和未捕获的RangeError:超出最大调用堆栈大小错误