Node.JS SyntaxError:JSON 中第 20 位的意外标记 i

Posted

技术标签:

【中文标题】Node.JS SyntaxError:JSON 中第 20 位的意外标记 i【英文标题】:Node.JS SyntaxError: Unexpected token i in JSON at position 20 【发布时间】:2021-11-28 12:14:13 【问题描述】:

我的代码发生了一些奇怪的事情 ||环境。以下代码昨天运行良好。

app.get('/', async (req, res)=>
    const catalog = 
        kitchen: await knex('kitchen').distinct('item_group'),
        bedroom: await knex('bedroom').distinct('item_group'),
        living_room: await knex('living_room').distinct('item_group'),
        kidsroom: await knex('kidsroom').distinct('item_group'),
        bathroom: await knex('bathroom').distinct('item_group'),
        accessories: await knex('accessories').distinct('item_group')
    
    res.json(catalog)
)

第二天,GET 请求回复:

SyntaxError: Unexpected token i in JSON at position 20
    at JSON.parse (<anonymous>)
    at parse (C:\Users\User\Desktop\Apps\SmartWebsite\node_modules\body-parser\lib\types\json.js:89:19)
    at C:\Users\User\Desktop\Apps\SmartWebsite\node_modules\body-parser\lib\read.js:121:18
    at invokeCallback (C:\Users\User\Desktop\Apps\SmartWebsite\node_modules\raw-body\index.js:224:16)
    at done (C:\Users\User\Desktop\Apps\SmartWebsite\node_modules\raw-body\index.js:213:7)
    at IncomingMessage.onEnd (C:\Users\User\Desktop\Apps\SmartWebsite\node_modules\raw-body\index.js:273:7)
    at IncomingMessage.emit (events.js:412:35)
    at endReadableNT (internal/streams/readable.js:1317:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)

我安装了以下框架/依赖项:

const express = require('express')
const mysql = require('mysql2/promise')
const app = express()
const port = 3000

app.use(express.json())

到目前为止,我的计算机中运行良好的所有项目都出现了问题。

我试过了:

重新启动计算机 ;) 卸载和重新安装框架和依赖项 JSON.parse(object) JSON.stringify(object)

提前感谢您的帮助!

【问题讨论】:

您是否调试并查看catalog 有哪些未被转换的内容?似乎这是首先要做的事情。 【参考方案1】:

首先

const catalog = 
        kitchen: await knex('kitchen').distinct('item_group'),
        accessories: await knex('accessories').distinct('item_group')
        ...
    

相反,将每个查询分配给一个新变量,然后通过简单的控制台日志记录检查它们是否都在工作。

【讨论】:

【参考方案2】:

问题似乎出在 Postman 的高速缓存上。 从浏览器发送 GET 请求后,一切恢复正常。 我在 Postman 中关闭旧窗口并从新窗口发送新请求。 它又可以正常工作了。

【讨论】:

以上是关于Node.JS SyntaxError:JSON 中第 20 位的意外标记 i的主要内容,如果未能解决你的问题,请参考以下文章

Node.JS JSON.parse 错误未定义

Discord.js + Node.js: SyntaxError: Unexpected token ''

Typescript 和 Node.js 错误“SyntaxError:无法在模块外使用导入语句”

repl node js问题 SyntaxError: Unexpected identifier

文本/纯文件下载的 Angular http$ 响应失败,并出现 SyntaxError:JSON 中的意外数字

Node.js在执行js文件时总是出错 SyntaxError: Unexpected identifier