Hasura 操作处理程序不存在(名称或服务未知)
Hasura action handler does not exist (Name or service not known)
我在 Docker 容器中有一个 Hasura 运行 的实例,并且直接在机器上用 NodeJS/Express 运行 编写了动作处理程序 API。
当我在本地测试所有内容时,它就像一个魅力 (macOS M1),但是当我在服务器上复制相同的设置时 (Ubuntu 20.04),它 returns 一个动作处理程序不会存在错误。
所有其他查询和突变都运行良好,只是操作 return 这个错误
您可以看到 Hasura 和 NodeJS 应用程序都是 运行
hasura docker container
localhost api call
在本地开发中,我的动作处理程序基础 url 是
它工作正常。
我也试过
http://localhost:5000/api
这就是 Hasura 动作调用的确切错误 returns
{
"errors": [
{
"extensions": {
"internal": {
"error": {
"type": "http_exception",
"message": "ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \"host.docker.internal\", service name: Just \"5000\"): does not exist (Name or service not known)"
},
"response": null,
"request": {
"body": {
"session_variables": {
"x-hasura-role": "public"
},
"input": {
"email": "",
"password": ""
},
"action": {
"name": "login"
}
},
"url": "http://host.docker.internal:5000/api/auth/login",
"headers": []
}
},
"path": "$",
"code": "unexpected"
},
"message": "http exception when calling webhook"
}
]
}
如果有人遇到同样的问题,我就是这样解决的
将此添加到 docker-compose.yml 文件
extra_hosts:
- "host.docker.internal:host-gateway"
在防火墙
中允许端口8080和5000
sudo ufw allow 8080
sudo ufw allow 5000
我在 Docker 容器中有一个 Hasura 运行 的实例,并且直接在机器上用 NodeJS/Express 运行 编写了动作处理程序 API。
当我在本地测试所有内容时,它就像一个魅力 (macOS M1),但是当我在服务器上复制相同的设置时 (Ubuntu 20.04),它 returns 一个动作处理程序不会存在错误。
所有其他查询和突变都运行良好,只是操作 return 这个错误
您可以看到 Hasura 和 NodeJS 应用程序都是 运行
hasura docker container
localhost api call
在本地开发中,我的动作处理程序基础 url 是
它工作正常。 我也试过
http://localhost:5000/api
这就是 Hasura 动作调用的确切错误 returns
{
"errors": [
{
"extensions": {
"internal": {
"error": {
"type": "http_exception",
"message": "ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \"host.docker.internal\", service name: Just \"5000\"): does not exist (Name or service not known)"
},
"response": null,
"request": {
"body": {
"session_variables": {
"x-hasura-role": "public"
},
"input": {
"email": "",
"password": ""
},
"action": {
"name": "login"
}
},
"url": "http://host.docker.internal:5000/api/auth/login",
"headers": []
}
},
"path": "$",
"code": "unexpected"
},
"message": "http exception when calling webhook"
}
]
}
如果有人遇到同样的问题,我就是这样解决的
将此添加到 docker-compose.yml 文件
extra_hosts:
- "host.docker.internal:host-gateway"
在防火墙
中允许端口8080和5000 sudo ufw allow 8080
sudo ufw allow 5000