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

NodeJS路由报错:‘Assignment to constant variable.’及商城页面无法运行

商城页面无法正常运行及“Assignment to constant variable.”错误排查

问题说明

搭建网站商城页面时,导航栏包含7个选项,其余页面均通过RestFUL API(Node服务器、路由、控制器)正常运行。商城页面配置逻辑与其他页面完全一致,但无法正常工作,还出现**“Assignment to constant variable.”**错误。唯一区别是商城EJS视图包含带forEach循环的item.ejs局部视图,需排查原因。

相关代码

路由代码(POST /addshopitem)

router.post('/addshopitem', encodedParser, function(req, res) {
  console.log("okay step 2");
  const name = req.body.name;
  const desc = req.body.desc;
  const price = req.body.price;
  const stock = req.body.stock;
  const createdby = req.body.createdby;

  console.log("okay step 2 almost");

  ShopController.add_item(req,res,name,desc,price,stock,createdby);

  console.log("okay step 2 done");
});

控制器代码(add_item方法)

exports.add_item = (req, res, name, desc, price, stock, createdby) => {
  const Item = require('../models/item');
  const item = new Item(1, name, desc, price, stock, createdby);

  const response = item.save();

  if (response) {
    res.render('shopitemadded');
  } else {
    res.render('error');
  }
}

导航项代码

<div class='dropdown'>
        <button class='dropbtn' id='shop' onclick="window.location.href='/shop';">Shop</button>
        <div class='dropdown-content'></div>
    </div>

Shop.ejs视图代码

<body>
  <div class='nav-div'>
    <%- include('./partials/nav.ejs') %>
  </div>

  <div class='content' id='content-one'>
    <div class="grid">
      <%- include('./partials/item.ejs') %>
    </div>
  </div>

  <div class='content' id='content-two'>
  </div>

  <div class='content' id='content-three'>
  </div>
</body>

Item.ejs局部视图代码

<% items.forEach(function(item) { %>
<div class="card"><img class="card__img" src="" alt="Canyons" />
  <div class="card__content">
    <h1 class="card__header"><%=item.name%></h1>
    <p class="card__text"><%=item.desc%></p>
    <form action="/shop/addtobasket" method="post">
      <input type="text" name="iditem" value="2" style="display: none;">
      <label for="amount">2
        <input type="text" name="amount" value="3">
      </label>
      <p>Anzahl an Lager: <%=item.stock%></p>
      <p>Stückpreis: <%=item.price%></p>
      <input class="card__btn" type="submit" name="submit" value="Dem Warenkorb hinzufügen">
    </form>
  </div>
</div>
<% })%>

排查方向

  1. 定位错误具体位置:查看Node控制台的错误栈信息,找到抛出“Assignment to constant variable.”错误的具体文件和行号,这是快速定位问题的核心。
  2. 检查Shop页面的GET路由:当前仅提供了/addshopitem的POST路由,但点击导航跳转到/shop是GET请求,需确认该GET路由是否正确实现,且是否将items数据传递给EJS视图(Item.ejs依赖items变量进行forEach循环)。
  3. 检查Item模型的save方法:控制器中调用了item.save(),若该方法内部存在对const声明的变量进行重新赋值的操作,会直接触发该错误。
  4. 排查前端JavaScript代码:若商城页面存在其他未提供的前端JS逻辑,需检查其中是否有对const变量重新赋值的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:55:21