HTMLページのベースURLを取得する方法を探していたので、ブラウザからの相対URLリクエストでそのベースが使用されていました。サーバーからHTMLをレンダリングするときにここで<base>タグをサーバ側で動的に変更する
は答え Defining root of HTML in a folder within the site root folder
ある - HTMLに<base>
要素を追加するための信頼できる方法はありますか?
HTMLファイルは自動的に生成されるため、回避することができれば手動でファイルに<base>
タグを追加しません。それは、ページがレンダリングされたときに何らかの形で動的に追加するといいでしょう。それが立つよう
だからここはHTMLです:
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
は、私は、サーバーとのレンダリングをベースタグを追加したいので、それは次のようになります。
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<base href="http://localhost:3050/coverage/lcov-report/cdt-now/index.html"> // <<<<
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
問題I index.htmlファイルが私のプロジェクトのルートにないとします:
しかし、上記の<head>
の<link>
タグで見られるように、index.htmlファイルは相対パス要求を行います。
私は現在、このようにページをレンダリングしています:
router.get('/', ac.allow('Admin'), function (req, res, next) {
let html = path.resolve(__dirname + '/../coverage/lcov-report/cdt-now/index.html');
res.setHeader('content-type', 'text/html');
fs.createReadStream(html).pipe(res);
});
テンプレートの作成が必要です。ジェイド、EJSを知っていますか? – sidewinder
私が質問したように、重要なのはファイルを制御しないということです。それは自動生成されています。私はそれを避けることができれば手動でファイルを修正したくありません。 –
する必要はありません。 – sidewinder