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

js代码:

javascript 复制代码
// 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代码:

html 复制代码
<!-- public/views/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Video Player</title>
</head>
<body>
    <h1>hello</h1>
  <video width="640" height="360" controls>
    <!-- 视频路径相对于static目录 -->
    <source src="./videos/111.mp4" type="video/mp4">
  </video>

  <img src="./videos/qq1.png" alt="">

  
</body>
</html>

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

文件目录结构:

--videos

--111.mp4

---qq1.png

--test.js

--test.html

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

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

其实这段代码:

javascript 复制代码
app.use(express.static(path.join(__dirname, '')));

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

这里将代码改为:

javascript 复制代码
app.use(express.static(path.join(__dirname, 'videos')));

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

修改后代码:

js:

javascript 复制代码
// 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:

html 复制代码
<!-- public/views/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Video Player</title>
</head>
<body>
    <h1>hello</h1>
  <video width="640" height="360" controls>
    <!-- 视频路径相对于static目录 -->
    <source src="111.mp4" type="video/mp4">
  </video>

  <img src="./qq1.png" alt="">

  
</body>
</html>
相关推荐
霍理迪1 小时前
CSS——背景样式以及雪碧图、渐变
前端·css
jump_jump5 小时前
基于 Squoosh WASM 的浏览器端图片转换库
前端·javascript·性能优化
小二·8 小时前
前端监控体系完全指南:从错误捕获到用户行为分析(Vue 3 + Sentry + Web Vitals)
前端·vue.js·sentry
阿珊和她的猫9 小时前
`require` 与 `import` 的区别剖析
前端·webpack
谎言西西里9 小时前
零基础 Coze + 前端 Vue3 边玩边开发:宠物冰球运动员生成器
前端·coze
努力的小郑10 小时前
2025年度总结:当我在 Cursor 里敲下 Tab 的那一刻,我知道时代变了
前端·后端·ai编程
GIS之路10 小时前
GDAL 实现数据空间查询
前端
OEC小胖胖10 小时前
01|从 Monorepo 到发布产物:React 仓库全景与构建链路
前端·react.js·前端框架
2501_9447114310 小时前
构建 React Todo 应用:组件通信与状态管理的最佳实践
前端·javascript·react.js
困惑阿三11 小时前
2025 前端技术全景图:从“夯”到“拉”排行榜
前端·javascript·程序人生·react.js·vue·学习方法