我正在尝试使用Bootstrap Carousel示例来处理简单的Express.js代码,但我失败了,总是404返回的代码用于html文件中的那些引用链接。 index.html位于/ test /文件夹中,而其余参考文件位于/ test / docs / assets / js和/ test / docs / assets / ico中。
Express.js简单代码如下:
app.get('/', function(request, response) {
response.sendfile('index.html');
});
index.html中的参考链接部分如下:
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="./docs/assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="./docs/assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="./docs/assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="./docs/assets/ico/apple-touch-icon-57-precomposed.png">
<link rel="shortcut icon" href="./docs/assets/ico/favicon.png">
我尝试使用不带参考链接的不同html文件,效果很好。我也尝试用app.use(express.static(__ dirname +'/ docs / assets / ico /'))之类的东西进行调整,但它也不起作用。
我该怎样做才能让它正常工作?我还发现没有太多关于express.js的例子;你对研究资源有什么建议吗?
提前致谢。
答案 0 :(得分:0)
如果您的目录结构如下所示:
app.js
index.html
docs/assets/ico/
然后尝试将其作为最小的Express应用程序:
// app.js
var express = require('express');
var app = express();
app.use(express.static(__dirname));
app.listen(8000);
一些解释:
__dirname
是app.js
所在的目录;由于index.html
和您的资产文件位于相对于该目录的位置,因此我们将其用作express.static
的“根”目录; /
,则index.html
不需要单独的路由,因为静态中间件会将目录请求“转换”为index.html
文件目录; 编辑:如果您想保留/
的单独路由,请确保在包含静态中间件之前包含它。原因是中间件和路由(通常)按声明顺序调用;如果您首先包含静态中间件,它将处理/
的请求,并且它永远不会到达您的路由处理程序:
// WRONG:
app.use(express.static(...));
app.get('/', ...);
// RIGHT:
app.get('/', ...);
app.use(express.static(...));