2017-04-22 74 views
0

我目前正在使用Node.js开发一个网站。 我刚刚设置了我的404页面,并且在我去mywebsite.com/404或其他不存在的页面或其他页面时正常工作,但如果我尝试访问类似mywebsite.com/foo/bar(也不存在)之类的资源,那么CSSJS不加载。在服务器上,我使用:Node.js静态文件夹引用无法加载CSS

app.use('/assets', express.static(__dirname + '/public')); 

而且,在网页上显示:

<link href="/assets/css/bootstrap.min.css" rel="stylesheet"> 

我知道,在HTML中的资产前添加一个../将工作,但不是理想。任何帮助?

我的文件夹结构的东西如下:

Project Folder 
|-App.js 
|-views 
    |-404.ejs 
    |-home.ejs 
|-public 
    |-CSS 
    |-Bootstrap.min.css 
    |-js 
    |-img 
    |-font 
+0

你能告诉我们你的文件夹结构吗?有找到你想要显示的页面吗? – Teocci

+0

由于URL以'/'开始,因此您不应该获得您描述的行为。 – Quentin

+0

已更新帖子以包含文件结构。请注意,我查看了404页面中的CSS,它正在请求'/ whatever/the/link/is/assets/css/boostrap.min.css' –

回答

0

使用base元的404页(或每页面!),并使用您指定的基本路径,它会永远要求你的资产。

例如,添加<base href="http://example.com" />之前你</head>标签将要求每个资产http://example.com的路径,以便在你的情况,而不是/foo/bar/assets/css/bootstrap.min.css,它将请求/assets/css/bootstrap.min.css

+2

基本元素用于解析相对URL,但是以斜杠开头的URL不是相对的,它是绝对的。 OP的问题一定是别的。而且,基本元素应该添加到head元素中,而不是_before_。 –

+0

@PatrickHund我会试一试,是的,它应该在头部(这是一个错字)。 – 2017-04-22 12:24:18

+0

@zGeek虽然这已解决了问题,但我想在此诊断潜在的问题,因为我相信这里还有其他事情 –