我正在开发一个小型Web应用程序,并且希望使其尽可能整洁(无api或框架*无明文)。
我一开始就遇到了第一个问题。
一旦我使用nodejs渲染html文件,从html内部调用的对文件的引用通常就“不存在”?
GET http:// localhost:3000 / Footage / UserTemplateIcon.png 404(未找到)
如果我尝试将html作为单个文件运行(没有节点),则找到了我的图像,但是由于某种原因,没有使用nodejs
这是我的文件结构
我的nodejs代码:
const http = require('http'),
port = 3000,
fs = require('fs'),
events = require('events'),
util = require('util');
var myEmitter = new events.EventEmitter();
const server = http.createServer((req, res) => {
if(req.url === "/"){
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end("Main page");
} else
if(req.url === "/feed"){
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
var myReadStream = fs.createReadStream(__dirname + '/src/Feed/index.html', 'utf8');
myReadStream.pipe(res);
}
else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/html');
var myReadStream = fs.createReadStream(__dirname + '/src/404/index.html', 'utf8');
myReadStream.pipe(res);
}
});
server.listen(port, () => {
console.log(`Server running on ${port}`);
})
和我的HTML
<html>
<head>
<div class="headerUserIcon"><img src=".\Footage\UserTemplateIcon.png"></div>
</head>
<body>
</body>
</html>
我发现有多种表达方式,其中有人说您必须通过表达类似内容来提供静态文件
app.use(express.static('src'));
但是我想不加说明地做这件事。
*更新:在添加到我的文件的链接之前,添加\。\返回此错误
不允许加载本地资源:file://.//Footage/UserTemplateIcon.png
您的程序包含如下代码:
if(req.url === "/"){
/* send something */
}
else if(req.url === "/feed"){
/* send something else*/
}
else {
/* send an error */
}
如果您要发送其他文件(例如.png),则每个文件都必须在if / else if级联中出现,或者在switch语句中,或者以某种形式进行解析req.url
。普通节点http服务器对任何文件系统一无所知。它被完全剥夺了。(这种方式与nginx或apache不同。)
Express提供了一个很好的框架来教节点html服务器有关文件系统,内容类型,路由,流,管道和其他方面的知识。没有表达,您需要自己教html服务器有关png文件,css和js等的信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句