Express调用res.sendFile返回signup.html报path is not defined错误
报错原因
出现path is not defined错误的核心原因是代码中调用了Node.js内置的path模块做路径拼接,但没有提前在文件头部引入这个模块。
另外你代码里的app.set('view engine', 'html')属于无效配置:Express原生不支持把纯HTML作为模板引擎,如果你只是要返回静态HTML文件,完全不需要配置这一项。
修复步骤
- 在server.js文件顶部引入Node.js内置的
path模块 - 删除无效的
view engine配置行 - 可选优化:添加静态资源托管规则,把code-FE目录设为静态资源目录,后续目录下的HTML、CSS、JS、图片等资源可以直接通过路径访问,不需要逐个写返回逻辑
修复后的完整代码
const express = require('express') // 补全缺失的path模块引入 const path = require('path') const app = express() const port = 3000 // 可选:配置静态资源托管,映射到同级code-FE目录 app.use(express.static(path.join(__dirname, '../code-FE'))) app.get('/', (req, res) => { res.sendFile(path.join(__dirname, '../code-FE', 'signup.html')); }) app.listen(port, () => { console.log(`Example app listening on port http://localhost:${port}`) })
路径有效性说明
你原本写的路径拼接逻辑是正确的:__dirname会返回当前server.js所在BE文件夹的绝对路径,拼接../code-FE后会定位到和BE文件夹同级的code-FE目录,最终可以准确找到signup.html文件,不需要调整路径参数。
内容的提问来源于stack exchange,提问作者Xuân Nguyễn Viết
相关产品推荐
相关产品推荐

