Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NodeJS静态文件夹中的HTML可以';t使用相对路径加载资产_Node.js_Express - Fatal编程技术网

Node.js NodeJS静态文件夹中的HTML可以';t使用相对路径加载资产

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 我无法加载路

我为NodeJS网站使用了一个静态文件夹,但奇怪的是,在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')
});