htmlタグ、<br>を表示されないようにしたい【Node.js】【 Express】【 ejs】
htmlタグが表示されてしまう
Node.js
Express
ejs
を使って、Webアプリを作成していた際、request.render()
で飛ばした文字列が、そのまま表示されてしまった。
htmlと認識されるようにしたい。
ブラウザにこんな感じでhtmlタグが表示されてしまっている。
<h1>そのまま表示される<br>のを直したい</h1>
<h2>そのまま表示されるよぉ〜</h2>
現在のコード( cssとかは割愛)
const express = require('express');
const app = express();
app.use(express.static('public'));
app.get('/', (req, res) => {
const result = [{comment:"<h1>そのまま表示される</h1>"},{comment:"<h2>そのまま表示される</h2>"}];
res.render('index.ejs',{tests:result});
});
<% tests.forEach(test => { %>
<div id="comment"><%= test.comment %> </div>
<% }); %>
いろいろ調べた結果
1日かけて調べたけど、なかなか解決に至る記事が見つからず…
結局、「brタグ html 表示 変換」なんてワードチョイスが悪かったみたいで、「node.js ejs htmlタグ」で調べたらすぐ解決した。
request.send()
使用するとか、{Content-Type:text/html}
を指定するとか、いろいろ見つけたけど、原因はめっちゃシンプルに解決できました。
解決方法
ejsでの変数の出力を<%= %>
→<%- %>
にするだけでした。
なので、以下に変更
<% tests.forEach(test => { %>
//<div id="comment"><%= test.comment %> </div>
↓↓↓↓↓↓↓↓
<div id="comment"><%- test.comment %> </div>
<% }); %>
ちゃんと表示されるようになりました!
<%= %> と <%- %>
どちらもHTML内で変数として出力してくれるが、以下の違いがあるよう。
<%= %>
:文字として出力
<%- %>
:HTMLの要素として出力
参考:EJSの基本的な書き方
Author And Source
この問題について(htmlタグ、<br>を表示されないようにしたい【Node.js】【 Express】【 ejs】), 我々は、より多くの情報をここで見つけました https://qiita.com/papipupesatou/items/ddaaaa2b57f303a30919著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .