nodejs 服务器监听的主机名称导致的本地前端代理错误

问题

前端本地开发服务器一直是正常的,直到某一天启动时出现这个错误:
image

代理服务的配置如下:(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各种,都没有解决。才想到可能是后端代码某次修改提交后导致的,遂去翻提交日志。发现一个可疑的东西🤨:
image

嗯看起来比较像是它引起的,先尝试解决下。

解决

将hostname变量的初始化方式修改为:

const hostname = process.env.NODE_ENV === 'development' ? '' : '0.0.0.0'

再次分别启动后端服务和前端服务,可以发现没有这个错误了。

⚠️注意这种方式要求在开发环境和生成环境均设置了环境变量 NODE_ENV


image

posted @ 2022-11-30 17:44  复读机§  阅读(83)  评论(0编辑  收藏  举报