nodejs 服务器监听的主机名称导致的本地前端代理错误
问题
前端本地开发服务器一直是正常的,直到某一天启动时出现这个错误:
代理服务的配置如下:(http://localhost:8000
跑着一个本地启动的nodejs服务器。)
const {createProxyMiddleware} = require('http-proxy-middleware');
const origin = 'http://localhost:8000';
const proxyOptions = {
target: origin,
changeOrigin: true,
};
module.exports = function (app) {
app.use('/assets', createProxyMiddleware(proxyOptions));
app.use('/api', createProxyMiddleware({
pathRewrite: {
// 用 /api 请求是为了访问后端接口,但是后端路由地址实际上不需要 /api 前缀
'^/api': '',
},
...proxyOptions,
}));
};
原因
这个问题出现后困扰了我很久,尝试过修改各种配置和Google各种,都没有解决。才想到可能是后端代码某次修改提交后导致的,遂去翻提交日志。发现一个可疑的东西🤨:
嗯看起来比较像是它引起的,先尝试解决下。
解决
将hostname变量的初始化方式修改为:
const hostname = process.env.NODE_ENV === 'development' ? '' : '0.0.0.0'
再次分别启动后端服务和前端服务,可以发现没有这个错误了。
⚠️注意这种方式要求在开发环境和生成环境均设置了环境变量 NODE_ENV
文完撒花🎉!感谢观看👏!