从你的问题描述来看,你在部署 Vue 应用到测试环境时遇到了 SockJS-Node 的跨域问题。这个问题可能是由于你的前端应用和后端服务器之间的跨域配置不正确导致的。SockJS 是一个浏览器 JavaScript 库,它为浏览器和服务器之间提供了一个类似 WebSocket 的 API,但是它可以降级到其他的传输方式,如长轮询、事件源等。
这里有几个可能的解决方案:
- 后端服务器配置 CORS:CORS(跨源资源共享)是一种在浏览器中实现跨域请求的技术。你的后端服务器需要正确配置 CORS,以允许来自你的前端应用(即
10.181.12.125:30016
)的请求。具体的配置方法取决于你的后端服务器使用的技术。例如,如果你的后端服务器是 Node.js,你可以使用 cors
这个 npm 包来配置 CORS。 - 前端配置代理:在开发环境中,你可能已经在 Vue 项目的
vue.config.js
文件中配置了代理,使得你的请求被转发到了后端服务器,从而避免了跨域问题。但是在生产环境中,你需要确保你的前端应用发出的请求被正确地路由到了后端服务器。你可能需要在你的部署环境中配置一个反向代理服务器(如 Nginx 或 Apache)来实现这一点。 - 检查 SockJS 的配置:SockJS 客户端库有一个
transports
选项,你可以用它来限制 SockJS 使用的传输方式。如果你的后端服务器不支持 SockJS 默认的某种传输方式(如 WebSocket),你可能需要在 SockJS 的客户端配置中禁用它。
请注意,上述的解决方案都是基于一般的理解和假设,具体的解决方案可能需要你根据你的具体情况进行调整。如果你需要更具体的帮助,你可能需要提供更多的信息,如你的后端服务器的配置、你的 SockJS 客户端的配置、你的部署环境等。
你 npm run start 是启动了一个 dev 服务,这个服务看起来是监听的 8080 端口,所以热更新也是8080 端口。但是你实际的服务地址经过了转发,dev 服务对这件事是不知道的,所以页面进行热更新时出现了 8080 和 30016 不一致导致跨域的问题。
这里的问题是:你不应该在测试环境、正式环境使用 dev 服务。也就是你不应该使用 npm run start 启动服务,而需要使用 nginx 或者其他的程序将你打包后的静态资源提供出去。