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

反应(连体衣)-错误不显示在控制台中,除非我尝试/捕捉

袁羽
2023-03-14

我正在用Jumpsuit构建一个webapp,我注意到了一个奇怪的错误。在React中,通常会导致错误被打印到控制台的事情不会这样做,除非我特意将该代码放在try catch块中。

例如,在一个组件的渲染方法中,我有这个:

render () {
    return (
        <div>
            ...
            <div>{this.loadQuestionDropdowns()}</div>
            }
        </div>
    );
}

并且在loadissa tionDropdown()中,我有这个返回来测试它:

{
    ...
    return <Potato />
}

现在,土豆不是真正的成分,也不是我进口的任何东西。通常,如果您尝试此操作,控制台将显示一个引用错误,表示“未定义马铃薯”。然而,它只是使应用程序崩溃,控制台中没有显示任何内容。如果我将其包装在try-catch块中:

    try {return (<Potato />);}
    catch (e) {console.log(e);}

然后它打印错误:

ReferenceError: Potato is not defined
    at Object.loadQuestionDropdowns (transformData.js:19)
    at Object.render (transformData.js:19)
    at p._renderValidatedComponentWithoutOwnerOrContext (InterceptorManager.js:52)
    at p._renderValidatedComponent (InterceptorManager.js:52)
    at p._updateRenderedComponent (InterceptorManager.js:52)
    at p._performComponentUpdate (InterceptorManager.js:52)
    at p.updateComponent (InterceptorManager.js:52)
    at p.receiveComponent (InterceptorManager.js:52)
    at Object.receiveComponent (createError.js:16)

应用程序会继续运行。我在其他一些场景中也注意到了这种行为。之前用React,Redux,Jumpsuit做过东西,没遇到过这个。我查了一下,似乎promise是可以默默吞下错误的东西,但我在自己的代码中没有使用任何promise,当我通过Jumpsuit更新状态时,我总是捕捉/抛出错误。我的NODE_ENV=development,对于构建,我只使用Jumpsuit的内置构建脚本< code>jumpsuit build。我看过一个帖子,说这是他们的webpack配置的问题,但我不使用webpack,我的package.json设置是:

{
  ...
  "scripts": {
    "build": "jumpsuit build && babel server --out-dir dist/server"
  },
  "dependencies": {
    ...
  },
  "babel": {
    "presets": [
      "es2015",
      "react",
      "stage-2"
    ],
    "plugins": [
      "transform-object-rest-spread"
    ]
  },
  "devDependencies": {
    "babel-cli": "^6.22.2",
    "babel-plugin-transform-object-rest-spread": "^6.22.0",
    "babel-preset-es2015": "^6.22.0",
    "babel-preset-react": "^6.22.0",
    "babel-preset-stage-2": "^6.22.0"
  }
}

知道为什么会发生这种行为吗?

共有1个答案

巩才捷
2023-03-14

似乎这个问题已经在内部问题跟踪者https://github.com/jumpsuit/jumpsuit/issues/3上提出来了

虽然它似乎没有直接在他们的响应中解决它。这在其他redux/反应库中也很明显,即redux-saga。例如:https://github.com/redux-saga/redux-saga/issues/632-虽然它不是完全相同的东西,但它是相关的。

我建议在webpackbin(他们在项目中使用的演示网站)上收集一个最最小的例子,并提交一个问题(或者更好的是,一个PR来修复它)。

 类似资料:
  • 我的游戏是统一的。当我试图上传游戏apk时,它显示了这个错误。 未优化APK警告: 此APK导致未使用的代码和资源被发送到用户。如果您使用Android应用捆绑包,您的应用程序可能会更小。如果不针对设备配置优化应用,则应用下载和安装在用户设备上的容量会比所需的要大。较大的应用程序安装成功率较低,占用用户设备上的存储空间。 决议: 使用Android应用程序包自动优化设备配置,或使用多个APK自行管

  • 我的应用程序使用terracotta/ehcache作为hibernate二级缓存以及“自定义”应用程序缓存,当本地运行terracotta服务器并通过开发人员控制台连接到它时,我可以看到我的应用程序以及各种缓存和统计数据。当我将相同的设置部署到不同的服务器时,它看起来正常,但是当我将开发人员控制台连接到远程服务器时,我可以在拓扑节点下的服务器阵列中看到一个服务器,但是我没有“我的应用程序”节点,

  • 我正在使用power shell控制台运行以下power外壳脚本: 这将打印错误。然后继续并打印“创建的新对象”和“结束”。所以我假设这是一个非终结性错误。 但是,如果我将try catch块放在新对象周围,如下所示: 在这种情况下,捕获块被击中并写入异常消息。 我的问题是: < li >这是一个非终止错误吗?这看起来像是一个非终止性错误,因为在错误之后继续执行(当没有try catch块时)。

  • 我在SpringBoot api上工作,并使用具有以下属性设置的H2数据库。 当我想使用浏览器通过'http://localhost:8082/h2-console'查看H2数据库控制台时,浏览器中打开了一个带有连接和测试连接按钮的屏幕。当我单击Test Connection时,它返回成功,但当单击Connect按钮时,出现错误,即localhost拒绝连接。

  • 我从昨天开始就试图解决这个问题,但没有解决。请帮我解决。我该怎么解决这个?我正在尝试部署我的第一个springboot web应用程序 你想知道什么我在控制台出错了。我从各个方面尝试了整个应用程序。我想是服务器问题