如何使用Express获取存放在其他文件夹中的HTML文件
Express 访问非同级目录HTML文件的实现方法
核心逻辑
你可以通过修改path.join的路径参数来定位任意位置的HTML文件,Node.js支持相对路径、绝对路径两种寻址方式。
两种常用实现方案
1. 单独路由映射指定HTML文件
如果只有少量零散的HTML文件存放在其他目录,直接在对应的路由中修改res.sendFile的路径参数即可:
- 相对路径寻址:用
../回退到上级目录,跨几级就加几个../,比如你的项目代码存放在/project/app.js,目标HTML存放在/custom_files/page.html,写法如下:app.get('/page', function(req, res) { res.sendFile(path.join(__dirname, '../custom_files', 'page.html')) }) - 绝对路径寻址:直接写目标文件夹的完整绝对路径,适配跨盘符等特殊场景,Windows示例:
app.get('/page', function(req, res) { res.sendFile(path.join('D:/my_html', 'page.html')) })
2. 托管整个文件夹的静态HTML
如果有批量HTML文件都存放在同一个其他目录,直接用express.static托管整个文件夹即可,不需要逐个编写路由:
// 访问路径前缀为/html,托管上级目录下static_html文件夹的所有内容 app.use('/html', express.static(path.join(__dirname, '../static_html')))
配置完成后,访问http://localhost:3000/html/demo.html就会自动返回static_html文件夹下的demo.html文件。
注意事项
- 路径拼接必须使用
path.join,不要直接手写字符串拼接,避免Windows、Linux/Mac系统的路径符号差异导致报错 - 确保Node.js运行进程对目标文件夹有读取权限,否则会返回权限类报错
完整可运行示例代码
const express = require('express') const path = require('path') const app = express() // 托管其他目录的批量静态HTML app.use('/pages', express.static(path.join(__dirname, '../my_html_files'))) // 单独路由返回指定位置的HTML app.get('/custom', function(req, res) { res.sendFile(path.join(__dirname, '../custom_folder', 'test.html')) }) app.get('/', function(req, res) { res.sendFile(path.join(__dirname, 'index.html')) }) app.get('/about', function(req, res) { res.send('about') }) app.listen(3000, function() { console.log('Server Online') })
内容的提问来源于stack exchange,提问作者RAHUL
相关产品推荐
相关产品推荐

