首页 > 解决方案 > 在 Node.js 中处理异常并将错误输出发送到 HTML

问题描述

我有一个功能,如果存在错误,控制台会记录错误,我希望将相同的数据发送回 HTML <div>。必须仅在出现错误的<div>情况下加载并向用户显示错误消息。

应用程序.js

console.log('Pulling Image from DockerHub\n');
const result1 = cp.execSync('docker pull mongo:'+version);
console.log(result1.toString());

假设上面的代码生成了一个错误,我希望使用 jQuery AJAX 在我的 HTML 中获取数据。

索引.html

<div id="errorReport"></div>

<script type="text/javascript">
        $(document).ready(function(){     
            $.ajax({
                    url: "http://localhost:8090/api/route1",
                    type: 'POST',
                    dataType:'json', 
                    success: function(res) {
                        console.log(res);
                    }
                });    
            });                   
</script>

需要处理上述子进程中的错误异常,并仅在存在 ERROR 时才(app.js)呈现数据。index.html如果 cp 没有返回任何错误,则无需渲染任何数据index.html

更新: 假设在这里const result1 = cp.execSync('docker pull mongo:'+version);我为版本提供了不正确的值,并且子进程失败。根据execSync语法,我不能有一个回调函数来确定错误。

现在控制台确实显示了一些错误消息

Error response from daemon: manifest for mongo:a not found: manifest unknown: manifest unknown
child_process.js:660
    throw err;
    ^

现在,如果我希望在我的 HMTL 上显示相同的消息,我<div>该怎么办?

标签: javascriptjquerynode.jsajaxexpress

解决方案


你可以试试这个——

<div id="errorReport"></div>

<script type="text/javascript">
        $(document).ready(function(){    
            $("#errorReport").hide();
            $.ajax({
                    url: "http://localhost:8090/api/route1",
                    type: 'POST',
                    dataType:'json', 
                    success: function(res, status) {
                        if(status === 500){
                           $("#errorReport").show();
                        }
                        console.log(res);
                    }
                });    
            });                   
</script>

在您的服务器上 -

try {
  cp.execSync(`docker pull mongo:'+version`);
  res.status(200)
 } catch (error) {
  //catch the error here and handle it accordingly by sending error response to client
 res.status(500)
 }

推荐阅读