首页 > 解决方案 > 服务器上的 Node.js 对象不是客户端上的对象

问题描述

我在 Node.js 的服务器端有一个变量,它是一个对象。我可以验证这一点,console.log(typeof(value));我得到了object

当我做一个console.log(value);我得到

[ 'bla_bla_1',
  'bla_bla_2',
  'bla_bla_3',
]

然后我用 Express: 将变量传递给客户端,res.render('target.ejs', {data:value});然后 ejs 文件用它解析它var value = '<%= data %>';

我想知道它是一个对象还是一个数组,以便弄清楚如何在客户端处理它。

我写了一个小脚本来测试它:

if (typeof(value) === 'object') {console.log("IT'S AN OBJECT");}
else {console.log("IT'S NOT AN OBJECT");}
if ( Array.isArray(value) ) {console.log("IT'S AN ARRAY");}
else {console.log("IT'S NOT AN ARRAY");}

我得到的是浏览器控制台中的这个:

IT'S NOT AN OBJECT
IT'S NOT AN ARRAY

标签: javascriptarraysnode.jsobject

解决方案


使用 EJS 语法解析后,该值是一个简单的字符串。

EJS Doc指定如何按原样设置值。

<%-将未转义的值输出到模板中

试试下面:

var value = <%- JSON.stringify(data) %>;

推荐阅读