如何修复区块链文档验证系统'unexpected end of JSON'报错
问题根因
你遇到的报错本质是无签发文档时,documents变量为空字符串/undefined,JSON.parse()无法解析空输入,直接抛出SyntaxError: Unexpected end of JSON input异常。
解决方案
前端EJS侧兼容(快速修复)
修改dashboard.ejs第13行附近的代码,新增解析前校验和异常捕获逻辑,兼容无文档场景:
<% let docList = [] // 校验入参合法性,捕获解析异常 try { docList = documents?.trim() ? JSON.parse(documents) : [] } catch(err) { docList = [] } console.log('fit', JSON.stringify(docList, null, '\t')) %> <!-- 页面渲染逻辑 --> <% if (docList.length) { %> <!-- 原有文档列表渲染代码保持不变 --> <% } else { %> <p>NO DOCUMENT ISSUED</p> <% } %>
以上代码会在documents为空、格式非法时默认赋值为空数组,渲染时自动显示无文档提示,不会抛出异常打断页面渲染。
后端侧优化(根源解决)
调整后端返回逻辑,用户无签发文档时,统一返回JSON格式的空数组字符串"[]",而非空值/空字符串,这样前端无需额外兼容即可正常解析。
内容的提问来源于stack exchange,提问作者fit
相关产品推荐
相关产品推荐

