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

如何将Node.js变量传递至JavaScript?EJS报错及解决方案

Node.js 变量传递至前端JavaScript的问题与解决方法

问题场景

我需要将Node.js中的数组cardNames传递到"flashcards"页面的JavaScript中,尝试通过EJS实现,服务端代码如下:

app.get("/apps/flashcards", (req, res) => {
    res.render("flashcards", { cardNames: ["card1", "card2", "card3", "card4"] });
})

在flashcards的EJS文件中,我编写了以下客户端代码,试图修改四个class为my-cards的span元素的textContent:

<script>
const cardNames = <% cardNames %>
const cards= document.querySelectorAll(".my-cards");
for (let i = 0; i < cards.length; i++) {
    cards[i].textContent = cardNames[i] + ", Score: 0";
}
</script>

运行时出现语法错误:

"Uncaught SyntaxError: Unexpected token 'const'"

需求要求:将变量从Node.js传递至内部或外部JavaScript,且逻辑需与HTML元素分离,不局限于EJS方法。

解决方案

方案一:修正EJS传递方式

通过EJS输出数组字符串后拆分,代码如下:

let cardNames = '<%= cardNames %>'
cardNames = cardNames.split(",")

方案二:使用Fetch请求

通过前端发起fetch请求获取后端数据,具体实现如下:

  1. 服务端新增接口返回cardNames数据:
app.get("/api/card-names", (req, res) => {
    res.json({ cardNames: ["card1", "card2", "card3", "card4"] });
})
  1. 前端JavaScript中调用接口并处理DOM:
async function getCardNames() {
    const response = await fetch("/api/card-names");
    const data = await response.json();
    const cards = document.querySelectorAll(".my-cards");
    data.cardNames.forEach((name, index) => {
        if (cards[index]) {
            cards[index].textContent = `${name}, Score: 0`;
        }
    });
}
getCardNames();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:10:03