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

Node.js+EJS渲染诗歌时HTML代码显示异常求助

问题解决思路

核心问题分析

  1. 函数逻辑错误:你提供的输入诗歌是一维数组(每个元素是单行诗句),但formatPoem函数里错误地将每个元素当作数组执行stanza.map,这会触发报错——字符串并没有map方法。
  2. EJS自动转义HTML:EJS默认用<%= %>输出内容时会转义HTML特殊字符,导致<br>被转换成&lt;br&gt;,直接显示成文本而非换行效果。

解决方案

1. 修正formatPoem函数

根据你的输入结构(一维数组),直接将每行诗句用<br>拼接即可:

function formatPoem(poem) {
  // 一维数组直接用<br>分隔每行
  return poem.join('<br>');
}

如果后续需要支持多节诗歌(二维数组,每个子数组对应一节),可以调整为:

function formatPoem(poem) {
  // 二维数组:每节内的行用<br>分隔,节与节之间用双换行分隔
  return poem.map(stanza => stanza.join('<br>')).join('<br><br>');
}

2. EJS中使用非转义输出

在EJS模板里,用<%- %>标签替代默认的<%= %>,这样HTML代码会直接生效而非被转义:

<div class="poem-container">
  <%- formatPoem(poem) %>
</div>

效果验证

修正后,页面会正确渲染<br>为换行,诗歌的分行结构正常显示,不会出现HTML代码文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:47:09