Express应用res.send()无数据返回 访问localhost:3003空白问题排查
问题原因
你的代码里存在一处多余的错误导入,直接导致响应逻辑失效:
const { json } = require('express/lib/response');
express/lib/response是Express框架的内部依赖模块,不属于对外暴露的官方API,直接手动加载该模块会打乱Express内部对响应对象的初始化逻辑,导致res.send()等响应方法执行时无法正常输出内容,且不会抛出显性报错,表现就是页面空白、接口无返回。- 你代码中已经通过
app.use(express.json())正确配置了JSON请求体解析能力,完全不需要单独导入这个内部模块下的json方法,这行导入属于编辑器自动补全时很容易误加的无效代码。
修复方法
直接删除上述错误的导入行即可,修复后的完整可运行代码:
const express = require('express'); const app = express() const port = process.env.PORT || 3003 const path = require('path') app.use(express.json()); app.get('/', (req, res) => { console.log("Called!") res.send('Welcome to Mini-Programs!') }) app.get("/app", (req, res) => { res.sendFile(path.join(__dirname, "./index.html")); }); app.listen(port, () => console.log(`Example app listening on port ${port}!`))
修复后重启服务,再访问http://localhost:3003就能正常看到返回的欢迎文本。
踩坑提示:日常开发中如果遇到Express接口无返回、页面空白,控制台也没有报错的情况,可以优先检查文件顶部有没有被编辑器自动补全加入的、从
express/lib/开头的内部路径导入的语句,这类误导入是该问题的高发诱因。
内容的提问来源于stack exchange,提问作者Concellia
相关产品推荐
相关产品推荐

