EJS开发时snippet字段拆分长段落换行输入触发报错 求解决方案
问题原因
你的报错属于JavaScript语法错误,和EJS本身无关联:JavaScript 中使用单引号(')、双引号(")包裹的普通字符串不支持直接跨行编写,你拆分snippet字段的文本时直接在单引号字符串内换行了,不符合JS语法规范,因此触发报错。
解决方案
这里提供3种常用的修复方式,优先推荐第一种:
- 方案1:使用ES6模板字符串(反引号`包裹)
模板字符串原生支持跨行书写,也不需要额外转义字符串内的单引号,是最便捷的方案:
app.set('view engine','ejs') app.get('/', (req,res)=>{ const blogs =[ { title: '托马斯·桑卡拉(布基纳法索)', // 把单引号换成反引号`即可 snippet: `本月初,布基纳法索首都法院起诉前总统布莱斯·孔波雷,指控他参与1987年10月15日谋杀战友托马斯·桑卡拉的事件。`, author: '乔瑟琳·博奇博·姆普萨', createdAt: Date.now(), } ] res.render('index',{blogs: blogs}) })
- 方案2:单引号字符串加换行转义符
如果要保留单引号写法,可以在每一行的末尾加反斜杠\转义换行符,注意反斜杠后面不能有多余空格:
snippet: '本月初,布基纳法索首都法院起诉前总统布莱斯·孔波雷,指控他参与\ 1987年10月15日谋杀战友托马斯·桑卡拉的事件。',
- 方案3:字符串拼接
把每一行单独用单引号包裹,用+号拼接成完整字符串:
snippet: '本月初,布基纳法索首都法院起诉前总统布莱斯·孔波雷,指控他参与' + '1987年10月15日谋杀战友托马斯·桑卡拉的事件。',
内容的提问来源于stack exchange,提问作者Jocelyne B. M'pusa
相关产品推荐
相关产品推荐

