节点js中的静态文件路径调用
Posted
技术标签:
【中文标题】节点js中的静态文件路径调用【英文标题】:Static file Path call in node js 【发布时间】:2021-02-10 19:18:59 【问题描述】:我创建了一个服务器端应用程序,可以检索该目录中的 index.html 文件。
代码如下,
const http = require('http')
const fs = require('fs')
const port = process.env.PORT || 1337;
const server = http.createServer(function (req, res)
if(req.url.match(/^\/static/))
return respondStatic(req,res)
return respondNotFound(req,res)
);
server.listen(port)
function respondStatic(req,res)
const filename = `$__dirname/public$req.url.split('/static')[1]`
fs.createReadStream(filename)
.on('error',()=> respondNotFound(req,res))
.pipe(res)
console.log(req.url);
然后运行程序并将以下 URL 提供给浏览器。 http://localhost:1337/static/index.html
当我看到终端后,我看到以下代码行 console.log(req.url);
为我提供了 3 个输出,如下所示。
/static/index.html
/static/tachyons.min.css
/static/ember.jpg
在那个目录下,有 5 个文件。
chat.css
chat.html
chat.js
ember.jpg
index.html
tachyons.min.css
ember.jpg 和 tachyons.min.css 用于 index.html。
问题是:
虽然我给了 index.html 作为静态文件 为什么其他 2 文件( which 是 /static/tachyons.min.css & /static/ember.jpg 打印为 req.url in 控制台?
【问题讨论】:
【参考方案1】:代码不提供仅 index.html
作为静态文件,它提供该目录中被请求的任何文件。正如你在这里暗示的那样:
ember.jpg 和 tachyons.min.css 用于 index.html
因此,如果index.html
引用了其他两个文件,那么当您在浏览器中请求index.html
时,您也会请求其他两个文件。当代码为这些请求提供服务时,它会在此处记录到控制台:
console.log(req.url);
【讨论】:
以上是关于节点js中的静态文件路径调用的主要内容,如果未能解决你的问题,请参考以下文章
python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件