You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript缺失指数错误:EJS传递_id至JS变量失败

解决EJS渲染ObjectId到JS变量的语法错误问题

你的问题根源很明确:MongoDB的_id是字符串类型的ObjectId,但你直接把它渲染到JS代码里时,没给它加引号,导致浏览器把5eb3ad8deeaa65dc55c47a0f当成了无效的数字字面量——JS会误以为你在写指数表达式(比如1e3这类格式),但实际格式完全不对,所以抛出了“missing exponent”的错误。

之前尝试的toString()方法没用,是因为你把未加引号的ID作为参数传给toString()时,JS在解析这个参数阶段就已经报错了,根本没机会执行toString()函数。

这里给你两个靠谱的解决方案:

方案1:直接给EJS输出添加引号

这是最直观的方法,把渲染出来的ID包裹成字符串字面量:

var getId = "<%= chattingTo._id %>";

渲染后的JS代码会变成:

var getId = "5eb3ad8deeaa65dc55c47a0f";

这完全符合JS语法规范,浏览器能正确识别这是一个字符串变量。

方案2:用JSON.stringify安全处理

如果要适配更通用的场景(比如应对可能包含特殊字符的字符串),可以用JSON.stringify自动处理引号:

var getId = <%= JSON.stringify(chattingTo._id) %>;

JSON.stringify会把传入的字符串转换成合法的JSON格式字符串,渲染后同样会生成带双引号的正确代码,效果和方案1一致,但适用性更广。

内容的提问来源于stack exchange,提问作者Iliyad Sama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:47:57