[英]Links to static resources in an HTML page served by nodejs not working
我在nodejs项目中有这样的目录结构
这是带有CSS链接的我的login_nimda.html
代码段:
我正在从nimda.js
提供login_nimda.html
, nimda.js
加载关联的CSS文件。
如您所见,我使用了根相对路径,但仍然没有得到任何结果。 我必须将CDN用于Bootstrap却无法使用下载文件的相同原因。
应该怎么样 链接的href
属性哪里出问题了?
编辑:这是我的nimda.js
代码段,正在提供HTML文件login_nidma.html
router.get('/', function( req, res){
let html = fs.readFileSync(path.join(__dirname,'../static/login_nimda.html'));
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
});
您还需要提供静态文件(例如.css
文件)。
您可以使用Express的内置中间件来提供静态文件express.static()
。
这是基本示例:
// serve static files in "app/static" with your node.js server
app.use('/static', express.static('app/static'))
现在,您可以从/static
在浏览器中(以及HTML文件中)访问它们:
<link href="/static/css/login_nimda.css" rel="stylesheet">
请在此处阅读有关express.static()
及其用法的更多信息: http : //expressjs.com/en/starter/static-files.html
使用express.static
中间件代替以下内容提供静态文件:
router.get('/', function( req, res){ let html = fs.readFileSync(path.join(__dirname,'../static/login_nimda.html')); res.writeHead(200, {'Content-Type': 'text/html'}); res.end(html); });
https://expressjs.com/en/starter/static-files.html
不要忘记,您可以使用path
模块和__dirname
变量(请参见此SO问题 )来帮助告诉express.static(...)
确切的静态文件在哪里。
如果要在不同文件app.use(express.static(...))
乘以倍数,则需要确保将中间件应用于同一app
实例。 我创建了一个代码示例进行说明。 在server.js#L10中 ,我将var app
传递到routes.js
模块(与您的nimda.js
等效)。 在routes.js#L4中 ,我在与在server.js
创建的var app
相同的var app
上调用.use()
。 在重构版本中,您在server.js
和nimda.js
中都使用app.use(express.static(...))
,我猜测您正在创建一个新的var app = express()
在每个文件中(这是我们要避免的事情)。
我不建议您将静态资产分成如图所示的两个不同位置,除非您有充分的理由这样做。 将它们放在一个中央位置可以确保我们甚至不需要单独的routes.js
(aka nimda.js
)文件来满足当前所需的功能,从而帮助您减少应用程序的复杂性。
如果使用Express,则根本不需要处理对静态内容的请求。 Express会自动返回您的静态信息。 只需使用路由器和文件夹结构的路径即可。 如
app.use('/ my_statics',express.static(__ dirname +“ / public”));
如果您在下面的/public/assets/css/a.css中有a.css
http://example.com/my_statics/assets/css/a.css
如果您在以下/public/assets/b.html拥有b.html,
http://example.com/my_statics/assets/b.html
编辑:我为我的sideproject DataEndpoints建立了一个类似的设置。 检查app.js的静态设置和路由器设置。 还要检查路由器文件夹以查看如何处理,您可能想在views文件夹下查看如何设置静态文件链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.