[英]HTML in NodeJS static folder can't load assets with relative path
我为NodeJS网站使用一个静态文件夹,但是奇怪的是,在index.html中,我仍然需要包含该文件的文件夹的路径。
将文件夹名称添加到路径可以解决此问题,但只能在提供的初始index.html
页面中。 在随后的任何页面中(单击站点中的超链接后),文件夹名称突然都不是路径的一部分!
夹
dist
└── viewer
├── index.html
├── test.html
├── style.css
└── game.js
节点
app.use(express.static('dist'))
app.get('/viewer', function (req, res) {
res.sendFile(__dirname + '/viewer/index.html')
})
INDEX.HTML
我无法使用./
路径加载资源,即使它们位于同一文件夹中
// WORKS
<link rel="stylesheet" href="./viewer/style.css">
// NOT WORKING
<script src="./game.js"></script>
测试HTML
如果单击index.html
中指向test.html
的链接,则该行为突然相反!
// NOT WORKING
<link rel="stylesheet" href="./viewer/style.css">
// WORKS
<script src="./game.js"></script>
如何获得指向节点站点中所有页面上正常工作的资产的链接?
尝试使用确切的路径
<script src="/viewer/game.js"></script>
<link rel="stylesheet" href="/viewer/style.css">
您可以检查文件是否在浏览器中正常工作
像开
http://localhost/viewer/style.css
http://localhost/viewer/game.css
如果您不想使用确切的路径,则必须设置正确的路径,因为test.html
位于viewer
文件夹中
所以在test.html中,您需要添加
<script src="./game.js"></script>
<link rel="stylesheet" href="./style.css">
在路由中,您正在浏览器http:// localhost / viewer中访问index.html
。
那么正确的来源路径如下
<link rel="stylesheet" href="./viewer/style.css">
<script src="./viewer/game.js"></script>
当路由将目录更改为/
。
如果您以http://localhost/viewer/index.html访问index.html
,则正确的路径为
<link rel="stylesheet" href="./style.css">
<script src="./game.js"></script>
在您的情况下,您将使用以下命令混淆路由器:
app.get('/viewer', function (req, res) {
res.sendFile(__dirname + '/viewer/index.html')
});
有一个名为index.html
的文件,当您输入目录时,大多数服务器会在该目录中查找index.html
。 如果可用,它将仅显示index.html
文件。
如果静态文件夹中存在目录,则不应添加路由。
PS:最佳做法是使用源的确切路径。
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.