我正在尝试在一个码头化的快递应用程序中通过一个chrome实例获得灯塔分数,但得到了:
flare_backend | Error: connect ECONNREFUSED 127.0.0.1:9222 flare_backend | at __node_internal_captureLargerStackTrace (node:internal/errors:484:5) flare_backend | at __node_internal_exceptionWithHostPort (node:internal/errors:662:12) flare_backend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16) { flare_backend | errno: -111, flare_backend | code: 'ECONNREFUSED', flare_backend | syscall: 'connect', flare_backend | address: '127.0.0.1', flare_backend | port: 9222 flare_backend | }
我基本上有两种服务:
class TestService { async launchChrome () { return await launch({ chromeFlags: ["--headless", "--no-sandbox", "--disable-gpu"], port: 9222 }); } async runLighthouse (url: string, chrome: LaunchedChrome, config: unknown) { return await lighthouse(url, { port: chrome.port }, config); } }
async getTest () { const chrome = await TestService.launchChrome(); console.log(chrome.port); const lighthouse = await TestService.runLighthouse( "https://www.google.com", chrome, { extends: "lighthouse:default" } ); return lighthouse; }
我的后端Dockerfile和docker compose文件如下所示:
ARG NODE_VERSION="18.12.1" ARG ALPINE_VERSION="3.17" FROM --platform=linux/amd64 node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS base WORKDIR /home/flare RUN chown -R node:node /home/flare RUN apk update && apk upgrade && \ apk add --no-cache chromium && \ rm -rf /var/cache/apk/* ENV CHROME_BIN=/usr/bin/chromium-browser COPY --chown=node:node package*.json ./ COPY --chown=node:node prisma ./prisma/ RUN npm install && npm cache clean --force RUN npx prisma generate COPY --chown=node:node . . EXPOSE 8080 USER node
version: '3.9' services: postgres: container_name: flare_postgres image: postgres:15.1-alpine restart: unless-stopped volumes: - ./backend/sql:/var/lib/postgresql/data env_file: - ./backend/.env ports: - 5432:5432 networks: - flare_network redis: container_name: flare_redis image: redis:7.0.5-alpine restart: unless-stopped ports: - 6379:6379 networks: - flare_network nginx: container_name: flare_nginx build: ./backend/nginx restart: unless-stopped ports: - 80:80 - 443:443 depends_on: - backend - frontend networks: - flare_network prisma: container_name: flare_prisma command: sh -c "prisma migrate deploy && prisma studio" build: ./backend/prisma restart: unless-stopped ports: - 5555:5555 env_file: - ./backend/.env depends_on: - postgres networks: - flare_network backend: container_name: flare_backend command: sh -c "npm install && npm run dev" build: ./backend volumes: - ./backend:/home/flare - /home/flare/node_modules working_dir: /home/flare restart: unless-stopped depends_on: - postgres - redis ports: - 8080:8080 networks: - flare_network frontend: container_name: flare_frontend command: sh -c "npm install && npm run dev" build: ./frontend volumes: - ./frontend:/home/flare - /home/flare/node_modules working_dir: /home/flare restart: unless-stopped depends_on: - backend ports: - 3000:3000 - 24678:24678 networks: - flare_network networks: flare_network: driver: bridge
我试图更改一些配置等,但无法解决问题。当我尝试在本地运行此应用程序时,它运行时没有问题,但在码头化环境中没有问题。我怀疑这可能是网络问题,但也不应该是真正的问题,因为express应用程序和chrome实例位于同一个容器中。这里可能有什么问题?