为什么在虚拟机外部无法访问studio服务?该怎么解决呢?

studio是从github上克隆的 3.1.0 版本源码,gateway是 2.1.1 分支版本。

虚拟机是linux操作系统centos7。在虚拟机里源码编译启动服务。
先用指令nohup ./nebula-httpd &启动,再用./nebula.service start all启动全部服务,最后用npm run dev启前端。就这三个指令。

在外部已经关闭了防火墙,在虚拟机外边可以ping通虚拟机。

10.1.1.99是本机ip。
在虚拟机外部的浏览器访问10.1.1.99:7001,一直卡在加载页面进不去,无法访问studio服务。
控制台报错显示app.js它一直访问了127.0.0.1:8888。但是我搜8888,然后把源代码中所有127.0.0.1:8888都改成了本机ip,10.1.1.99:8888。但外部浏览器报错app.js依然访问那个127.0.0.1:8888。不知道怎么回事




报错显示是源代码中explore文件84行底部那个script标签src网址访问了127.0.0.1:8888。
但是虚拟机studio源码显示那里边访问了app.js。可是studio是react项目,都是ts文件,没有js文件啊。这怎么处理呢?

请问具体在虚拟机启动服务的过程是怎样的,用啥指令启动的

先用指令nohup ./nebula-httpd &启动,再用./nebula.service start all启动全部服务,最后用npm run dev启前端。就这三个

npm run dev 启动是正常的么,正常的话如果端口没有被占用,是不需要改7001 和 8888 的





npm run dev启动一直报这些错,但是虚拟机浏览器还能正常打开网页,连上数据库。
虚拟机外部的浏览器就不行了

虚拟机浏览器里也有一样的报错但是不影响进入页面。



端口没有被占用

虚机的网络是什么方式,如果是 NAT 的话,默认主机是连不进去的,但是你可以做端口映射。

如果是 bridged,则直接host可以访问到 VM 的网段。

无论是哪一种形式, 127.0.0.1 在host上是没法访问 VM 的,因为是回环到自己,除非做了端口映射。


虚拟机网络是桥接模式

抱歉忽略吧,之前没仔细看描述,网络是ok的,只是代码里边因为什么原因访问了 127.0.0.1:8888 是不应该的。

感觉可能是配置的问题,如果不是二次开发的情况下,没有必要从源码运行哈,要么用 rpm 包,要么用 docker compose 装,那里边默认的配置应该都没有这个问题。

你好,如何把那个app.js访问的127.0.0.1改为10.1.1.99呢?我同事认为是这个错误导致的。

我们是二次开发,让它自动连接数据库,改了一下样式。只能采用这种方式了。在虚拟机内部改完,在外部却访问不了。

@hetao 这里选择走到 127.0.0.1:8888 可能是什么造成的呢?从代码启动的初始初始配置就是这个假设?
@wangziayang 你可以把你的代码按照ci里的方式打包一下,用生产的方式启动么?那里用的默认应该是ok的

studio源码中application_config.json文件修改代码后编译居然自动恢复原样,是什么神奇原因?

第184行,我把127.0.0.1改为10.1.1.99并保存,然后npm run dev重新编译,编译完,那行代码居然自动恢复了原样。为啥改不成功呢?
https://discuss-cdn.nebula-graph.com.cn/uploads/default/original/2X/2/2a96239038663082f8f73e367f93b48077ca7289.png

studio源码中application_config.json文件修改代码后编译居然自动恢复原样,是什么神奇原因?

第184行,我把127.0.0.1改为10.1.1.99并保存,然后npm run dev重新编译,编译完,那行代码居然自动恢复了原样。为啥改不成功呢?
https://discuss.nebula-graph.com.cn/uploads/default/original/2X/2/2a96239038663082f8f73e367f93b48077ca7289.png

你好,ci里的方式,ci是什么呀

我想说的就是github 里边 https://github.com/vesoft-inc/nebula-studio/blob/master/.github/workflows/build.yml 的打包过程,然后安装打包好的包

那你不要用 npm run dev来启动开发模式了

  1. npm run build
  2. npm run tsc
  3. npm run start
    你用这个指令来启动 studio 服务试一下
1 个赞

你好,我们试了。有一个新问题
image
这里跨域了,该怎么处理呢。在studio代码里找到sameorigin,改为allow-all,依然会报跨域的错。

在 config.default.ts 的 config.security 里添加
xframe: { value: 'SAMEORIGIN', },
然后重新打包编译试下

1 个赞