节点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等静态文件

QT creator 如何调用VC写的静态库

gcc找不到静态库中的函数

为啥我的节点静态文件服务器丢弃请求?

SpringMVC中css,js,图片等静态资源被拦截的解决办法

springmvc引入js,css等静态文件路径问题!!!