Node.js NodeJS静态文件夹中的HTML可以';t使用相对路径加载资产
我为NodeJS网站使用了一个静态文件夹,但奇怪的是,在index.html中,我仍然需要包含包含文件的文件夹的路径 将文件夹名称添加到路径可以解决问题,但仅在提供的初始Node.js NodeJS静态文件夹中的HTML可以';t使用相对路径加载资产,node.js,express,Node.js,Express,我为NodeJS网站使用了一个静态文件夹,但奇怪的是,在index.html中,我仍然需要包含包含文件的文件夹的路径 将文件夹名称添加到路径可以解决问题,但仅在提供的初始index.html页面中。在随后的任何页面中(单击站点中的超链接后),文件夹名称突然可以不成为路径的一部分 文件夹 dist └── viewer ├── index.html ├── test.html ├── style.css └── game.js 节点 INDEX.HTML 我无法加载路
index.html
页面中。在随后的任何页面中(单击站点中的超链接后),文件夹名称突然可以不成为路径的一部分
文件夹
dist
└── viewer
├── index.html
├── test.html
├── style.css
└── game.js
节点
INDEX.HTML
我无法加载路径为/
的资产,即使它们位于同一文件夹中
// WORKS
<link rel="stylesheet" href="./viewer/style.css">
// NOT WORKING
<script src="./game.js"></script>
如何在节点站点的所有页面上获得指向正常工作的资产的链接?请尝试使用确切的路径
您可以检查您的文件是否在浏览器中工作
喜欢开口
如果不想使用精确的路径,则必须设置正确的路径, 因为
test.html
在viewer
文件夹中
因此在test.html中需要添加
在路由中,您正在浏览器中访问
index.html
那么源的正确路径如下所示
<link rel="stylesheet" href="./viewer/style.css">
<script src="./viewer/game.js"></script>
在您的情况下,您正在使用以下命令混淆路由器:
app.get('/viewer', function (req, res) {
res.sendFile(__dirname + '/viewer/index.html')
});
当您输入一个目录时,大多数服务器都会在该目录中查找一个名为index.html
的文件。如果可用,它只显示index.html
文件
如果静态文件夹中存在目录,则不应添加路由
PS:最佳做法是使用源的精确路径。
希望这有帮助尝试使用准确的路径
您可以检查您的文件是否在浏览器中工作
喜欢开口
如果不想使用精确的路径,则必须设置正确的路径, 因为
test.html
在viewer
文件夹中
因此在test.html中需要添加
在路由中,您正在浏览器中访问
index.html
那么源的正确路径如下所示
<link rel="stylesheet" href="./viewer/style.css">
<script src="./viewer/game.js"></script>
在您的情况下,您正在使用以下命令混淆路由器:
app.get('/viewer', function (req, res) {
res.sendFile(__dirname + '/viewer/index.html')
});
当您输入一个目录时,大多数服务器都会在该目录中查找一个名为index.html
的文件。如果可用,它只显示index.html
文件
如果静态文件夹中存在目录,则不应添加路由
PS:最佳做法是使用源的精确路径。
希望这有帮助,但如果我在HTML文件中使用内部链接,目录突然被省略了!在我的问题中,
index.html
链接到test.html
,路径必须是src=“/game.js”
。我想要一致的行为,因为多个页面都在express get
路径中,就像在内部链接中一样。最好使用源代码的确切路径,因为您声明的行为库用于解释,但我想我只是不明白为什么html文件找不到同一文件夹中的css文件。你说“你把路由器弄糊涂了”是什么意思?我想我只是不希望发生这种情况:因为路由将目录更改为/
。不确定Node为什么这样做:)您需要了解更多关于nodejs路由器的信息。一开始,它有点复杂,但它很棒。:)这是可行的,但是如果我在HTML文件中使用内部链接,目录就会突然被省略!在我的问题中,index.html
链接到test.html
,路径必须是src=“/game.js”
。我想要一致的行为,因为多个页面都在express get
路径中,就像在内部链接中一样。最好使用源代码的确切路径,因为您声明的行为库用于解释,但我想我只是不明白为什么html文件找不到同一文件夹中的css文件。你说“你把路由器弄糊涂了”是什么意思?我想我只是不希望发生这种情况:因为路由将目录更改为/
。不确定Node为什么这样做:)您需要了解更多关于nodejs路由器的信息。一开始,它有点复杂,但它很棒。:)
app.get('/viewer', function (req, res) {
res.sendFile(__dirname + '/viewer/index.html')
});