使用nodejs和html布局一个简单的视频播放网站,但是使用localhost:端口访问html无法加载视频

js代码:

// app.js
const express = require('express');
const path = require('path');
const app = express();

// 设置静态文件目录,这里假设你的视频文件在public/videos/目录下
app.use(express.static(path.join(__dirname, '')));


// 设置主页路由,指向一个包含HTML5 video元素的页面
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'test.html'));
});

// 启动服务器
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

html代码:





  
  
  Video Player


    

hello

在vscode中直接打开test.html可以正常加载视频。但是使用node 启动js监听端口然后调用test.html就不行,不能加载html文件。

文件目录结构:

--videos

        --111.mp4

        ---qq1.png

--test.js

--test.html

问题,发现是localhost访问时地址不对。浏览器会直接访问localhost:3001/111.mp4

所以这里需要设置路径映射

其实这段代码:

app.use(express.static(path.join(__dirname, '')));

就是用来设置路径映射的,只是最开始没有设置正确。

这里将代码改为:

app.use(express.static(path.join(__dirname, 'videos')));

将路径映射到videos文件夹,然后就可以读取到videos文件夹下的文件。

修改后代码:

js:

// app.js
const express = require('express');
const path = require('path');
const app = express();

// 设置静态文件目录,这里假设你的视频文件在public/videos/目录下
app.use(express.static(path.join(__dirname, 'videos')));


// 设置主页路由,指向一个包含HTML5 video元素的页面
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'test.html'));
});

// 启动服务器
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

html:





  
  
  Video Player


    

hello

你可能感兴趣的:(html,前端)