javascript - Nodejs无法从html参考中找到图像
问题描述
我正在开发一个小型 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>
我找到了多种使用 express 的解决方案,人们说您必须通过 express 提供静态文件,例如
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 语句中,或者在某种 .png 的解析中req.url
。普通节点 http 服务器对任何文件系统一无所知。它完全被剥离了。(这种方式与 nginx 或 apache 不同。)
Express 提供了一个很好的框架来教节点 html 服务器有关文件系统、内容类型、路由、流、管道和其他方面的知识。如果没有 express,您需要自己教 html 服务器有关您的 png 文件、css 和 js 等的信息。
推荐阅读
- elasticsearch - 在弹性搜索中提升查询
- python - 在 multiprocessing.Pool 中将 map 转换为 imap
- angularjs - 打开多个底部工作表 - 使用 $mdBottomSheet 在另一个之上堆叠
- c# - 图像组件不适合动画
- numpy - 将 datetime 字段添加到 recarray — 重新访问
- c# - 如何使用 linq 获取字符串列表?
- javascript - 为什么我的 if 语句中的条件不能识别 NaN?
- laravel - 模型 > whereHas > 多连接 > 跨数据库 | 不工作
- mysql - Bash script for reads from csv and use it in mysql query
- javascript - Internet Explorer 11 onclick triggered only if scripting is allowed in Internet Zone