将 ejs 与 express 一起使用会返回意外的令牌 < used
Posted
技术标签:
【中文标题】将 ejs 与 express 一起使用会返回意外的令牌 < used【英文标题】:Using ejs with express returns unexpected token < used 【发布时间】:2019-06-06 01:14:41 【问题描述】:这是我第一次尝试使用 Ejs,我想我的语法都是正确的。不明白怎么回事
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded(extended:true));
let today = new Date();
let options =
weekday: "long",
year: "numeric",
month: "long",
day: "numeric"
;
let day = today.toLocaleDateString("en-US", options);
let todoList = ["Sleep","Eat","?"];
app.get("/", function(req, res)
res.render("index",
day: day,
todoList: todoList
);
);
app.post("/", function(req, res)
let newInput = req.body.todoInput;
todoList.push(newInput);
);
app.listen(3000, function()
console.log("Server started on port 3000.");
);
我的 ejs
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Ra's To-do List</title>
</head>
<body>
<p>
<%= day %> : Today's to-do list</p>
<ul>
<% for (var i=0, i< todoList.length, i++) %>
<li> <%= todoList[i] %> </li>
<% %>
</ul>
<form action="/" method="post">
<input type="text" name="todoInput" placeholder="Add to your to-do list here">
<button type="submit" name="button">Add stuff to-do</button>
</form>
</body>
</html>
我正在使用 WSL 并已正确安装所有模块。它在编译 ejs 时给出了意外的令牌
SyntaxError: Unexpected token
如果上述错误没有帮助,您可能想尝试 EJS-Lint: https://github.com/RyanZim/EJS-Lint 或者,如果您打算创建一个 async 函数,传递 async: true 作为选项。 在新函数 () 在 Template.compile (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/ejs/lib/ejs.js:618:12) 在 Object.compile (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/ejs/lib/ejs.js:389:16) 在句柄缓存(/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/ejs/lib/ejs.js:212:18) 在 tryHandleCache (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/ejs/lib/ejs.js:251:16) 在 View.exports.renderFile [作为引擎] (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/ejs/lib/ejs.js:482:10) 在 View.render (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/express/lib/view.js:135:8) 在 tryRender (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/express/lib/application.js:640:10) 在 Function.render (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/express/lib/application.js:592:3) 在 ServerResponse.render (/mnt/c/Users/PraveshRana/Desktop/webDev/ejs-todo/node_modules/express/lib/response.js:1008:7)
【问题讨论】:
请发布完整的错误堆栈以便快速了解问题 @kRiZ SyntaxError: Unexpected token 在 for 循环中使用分号 ( ; ) 而不是逗号 ( , ) 【参考方案1】:我认为问题在于您在 ejs 语句中使用逗号而不是分号。
所以而不是:
<% for (var i=0, i< todoList.length, i++) %>
应该是:
<% for (var i=0; i< todoList.length; i++) %>
干杯, 艾丹。
【讨论】:
【参考方案2】:使用:
<% for (var i=0; i< todoList.length; i++) %>
代替:
<% for (var i=0, i< todoList.length, i++) %>
将,
替换为;
【讨论】:
以上是关于将 ejs 与 express 一起使用会返回意外的令牌 < used的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 Node.js (Express) 设置为与虚拟主机一起使用,并遇到意外错误
在Javascript(node.js,express.js,ejs)中访问服务器端变量[关闭]