错误:GetAddrInfoReqWrap.onlookup上的getaddrinfo EAI_AGAIN数据库[as



我正在使用docker、postgresql和nodejs(typescript(创建一个api。自从创建管理员用户以来,我就遇到了这个错误,似乎没有什么能修复它:

docker终端错误:

Error: getaddrinfo EAI_AGAIN database
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:72:26)
[ERROR] 12:33:32 Error: getaddrinfo EAI_AGAIN database

失眠错误:

{
"status": "error",
"message": "Internal server error - Cannot inject the dependency "categoriesRepository" at position #0 of "ListCategoriesUseCase" constructor. Reason:n    No repository for "Category" was found. Looks like this entity is not registered in current "default" connection?"
}

我正在学习一门在线课程,这个代码似乎对其他人都有效,因为课程论坛上没有关于这个错误的报告。

据我所知,在连接到我的数据库(一个docker容器(时,似乎出现了某种类型的问题。这是我的docker-compose.yml文件:

version: "3.9"
services:
database_ignite:
image: postgres
container_name: database_ignite
restart: always
ports: 
- 5432:5432
environment:
- POSTGRES_USER=something
- POSTGRES_PASSWORD=something
- POSTGRES_DB=rentx
volumes:
- pgdata:/data/postgres
app:
build: .
container_name: rentx
restart: always
ports: 
- 3333:3333
- 9229:9229
volumes: 
- .:/usr/app
links: 
- database_ignite
depends_on:
- database_ignite
volumes:
pgdata:
driver: local

我的server.ts文件:

import "reflect-metadata";
import express, { Request, Response, NextFunction } from "express";
import "express-async-errors";
import swaggerUi from "swagger-ui-express";
import { AppError } from "@shared/errors/AppError";
import createConnection from "@shared/infra/typeorm";
import swaggerFile from "../../../swagger.json";
import { router } from "./routes";
import "@shared/container";
createConnection();
const app = express();
app.use(express.json());
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerFile));
app.use(router);
app.use(
(err: Error, request: Request, response: Response, next: NextFunction) => {
if (err instanceof AppError) {
return response.status(err.statusCode).json({
message: err.message,
});
}
return response.status(500).json({
status: "error",
message: `Internal server error - ${err.message}`,
});
}
);
app.listen(3333, () => console.log("Server running"));

这是我的index.ts文件,位于src>模块>共享>infra>http>server.ts:

import { Connection, createConnection, getConnectionOptions } from "typeorm";
export default async (host = "database"): Promise<Connection> => {
const defaultOptions = await getConnectionOptions();
return createConnection(
Object.assign(defaultOptions, {
host,
})
);
};

我试着重新启动我的容器,重新制作它们,访问我的postgres容器并检查表;数据库";至";localhost";但每次都是一样的:容器运行,但错误仍然存在。我已经检查了课程的回购和我的代码匹配情况。我已经刷新了我的DNS,但这也没有任何作用。

这是admin.ts文件;开始一切":

import { hash } from "bcryptjs";
import { v4 as uuidv4 } from "uuid";
import createConnection from "../index";
async function create() {
const connection = await createConnection("localhost");
const id = uuidv4();
const password = await hash("admin", 6);
await connection.query(`
INSERT INTO Users (id, name, email, password, "isAdmin", driver_license, created_at)
VALUES (
'${id}',
'admin',
'admin@rentx.com.br',
'${password}',
true,
'0123456789',
NOW()
)
`);
await connection.close;
}
create().then(() => console.log("Administrative user created"));

我很想知道是什么导致了这个错误。

docker-compose.yml文件中似乎有一个名为database_ignite的服务。Docker默认使用您的服务名称创建一个主机。尝试将主机从index.ts文件中的database更改为database_ignite:

import { Connection, createConnection, getConnectionOptions } from "typeorm";
export default async (host = "database_ignite"): Promise<Connection> => {
// Changed database to ^^ database_ignite ^^
const defaultOptions = await getConnectionOptions();
return createConnection(
Object.assign(defaultOptions, {
host,
})
);
};

最新更新