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

