【问题标题】:How to exit javascript / node.js inside HTML如何在 HTML 中退出 javascript/node.js
【发布时间】:2020-04-30 18:55:29
【问题描述】:

我有 json 文件(我使用 node.js 创建了这个 json 文件),我使用 json2html 库在 HTML 中读取,如果 json 文件存在/可读,那么它将上传到我们的服务器中。

我有 json2html 代码,可以读取 json 文件并根据 json 文件的内容打印 HTML 页面。如果 json 文件不可读或不存在,那么我希望 node.js / javascript 停止或退出该过程,以便没有任何内容上传到服务器。如果 json 文件不可用,我应该如何停止/退出代码进一步处理。

我在读取 json 文件的 HTML 文件中确实有 process.exit()。它不会优雅地退出。当我检查元素时,它会出错Uncaught (in promise) ReferenceError: process is not defined。我确实有npm i process,尽管流程是全球性的。我仍然在我的 index.js 文件中明确定义const process = require('process');。在浏览器中打开我的 html 文件时仍然出现错误。如何克服这个错误。请参考下面我的html文件中的代码

let responseContent = fetch('studentRecords.json')
        .then(function(response) {
            return response.json();
        })
        .catch(function(err) {
            process.exit(1);
        });

【问题讨论】:

  • 您可以只记录错误,这就是您在获取过程中捕获错误的原因。即使您可以通过不存在的“进程”终止整个脚本执行,终止您的程序也不是优雅的错误处理
  • 浏览器 JavaScript 中没有“进程”对象。
  • HTML 页面中的 JavaScript 在浏览器中运行,而不是在 node.js 中。 HTML 文件和任何脚本文件由 node.js 传递到浏览器,但它们在客户端计算机上的浏览器中运行。它们不在服务器上运行。因此,浏览器中没有 process 对象,因为您只能在 HTML 页面中运行基于浏览器的 Javascript。 process 对象仅在运行服务器代码时在您的服务器上可用。

标签: javascript html node.js json2html


【解决方案1】:

这里的问题是您试图在 HTML 文件中引用来自浏览器的节点全局变量 process。正因为如此,它不会存在。

根据您所提到的,您可以将代码块保持原样,而不是运行process.exit(1),您可以尝试注销错误或将其包装在回调函数中并返回错误?这样它就不会尝试处理 fetch 响应,并且可以选择以您认为合适的方式继续。

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 2015-11-24
    • 2015-01-29
    • 1970-01-01
    • 2022-01-09
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多