NodeJS prisma找不到数据库url

jslywgbw  于 2023-05-28  发布在  Node.js
关注(0)|答案(2)|浏览(186)

我在Node中使用Prisma,我在使用Docker。
当我试图在数据库中创建一个新用户时,它说DATABASE_URL没有找到,但我在我的env中声明了它,所以我真的不知道我在哪里有这个错误。

server_container | Server is running on port 4000
server_container | 
server_container | Invalid `prisma.user.create()` invocation in
server_container | /app/src/app.ts:18:36
server_container |
server_container |   15 const prisma = new PrismaClient();
server_container |   16
server_container |   17 const main = async () => {
server_container | → 18     const user = await prisma.user.create(
server_container |   error: Environment variable not found: DATABASE_URL.
server_container |   -->  schema.prisma:10
server_container |    |
server_container |  9 |   provider = "postgresql"
server_container | 10 |   url      = env("DATABASE_URL")
server_container |    |
server_container |
server_container | Validation Error Count: 1

我的docker docker-compose.yml看起来像这样:

version: '3.8'
services:
  api:
    build: .
    container_name: server_container
    ports:
      - "4000:4000"
    volumes:
      - ./:/app
    networks:
      - api-pokemon-network
    depends_on:
      - db

  db:
    image: postgres:14
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_PORT: ${POSTGRES_PORT}
    volumes:
      - data:/var/lib/postgresql/data
    env_file:
      - .env
    command: -p ${POSTGRES_PORT}
    networks:
      - api-pokemon-network
    ports:
      - '${POSTGRES_PORT}:${POSTGRES_PORT}'

volumes:
  data:

networks:
  api-pokemon-network:

这是我的.env

POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres_docker
POSTGRES_HOST=db
POSTGRES_PORT=54320

DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public
92vpleto

92vpleto1#

只需运行npx prisma generate。这将重新建立schema.prisma和.env文件之间的链接。确保您的DBURL在反引号``内。

tyg4sfes

tyg4sfes2#

我知道这是旧的。但是在你的docker-compose.yml中,你忘了将DATABASE_URL添加到环境变量中。你有所有其他的变量,除了那个。

相关问题