You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS微服务部署报错:找不到指定模块路径

Error: Cannot find module '/usr/src/app/dist/apps/kafkaprodute/main' in NestJS Monorepo + Docker Setup

部署API网关和Kafka微服务时遇到以下错误,已花费3小时排查仍未解决:

2024-04-26 13:47:03 Error: Cannot find module '/usr/src/app/dist/apps/kafkaprodute/main'
2024-04-26 13:47:03     at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1143:15)
2024-04-26 13:47:03     at Function.Module._load (node:internal/modules/cjs/loader:984:27)
2024-04-26 13:47:03     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
2024-04-26 13:47:03     at node:internal/main/run_main_module:28:49

以下是我的相关配置文件:

docker-compose.yaml

version: '3'
services:
  kafka:
    container_name: initKafka
    build:
      context: ./
      dockerfile: ./apps/kafka/Dockerfile
    env_file:
      - .env
    depends_on:
      - postgres
    volumes:
      - .:/usr/src/app 
      - /usr/src/app/node_modules
    command: npm run start:dev kafka 
    
  kafkaprodute:
    build: 
      context: ./
      dockerfile: ./apps/kafkaprodute/Dockerfile
    ports:
      - '4000:5000'
    env_file:
      - .env
    depends_on:
      - kafka
    volumes:
      - .:/usr/src/app 
      - /usr/src/app/node_modules
    command: npm run start:dev kafkaprodute 
    
  postgres:
    image: postgres
    env_file:
      - .env
    ports:
      - '5432:5432'
    volumes:
      - ./db/data:/var/lib/postgresql/data

  postgres_admin:
    image: dpage/pgadmin4
    depends_on:
      - postgres
    env_file:
      - .env
    ports:
      - '15432:80'

  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - '22181:2181'

  kafkaServer:
    image: wurstmeister/kafka
    container_name: kafkaServer
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

nest-cli.json

{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "apps/kafkaprodute/src",
  "compilerOptions": {
    "deleteOutDir": true,
    "webpack": false,
    "tsConfigPath": "apps/kafkaprodute/tsconfig.app.json"
  },
  "monorepo": true,
  "root": "./",
  "projects": {
    "kafkaprodute": {
      "type": "application",
      "root": "apps/kafkaprodute",
      "entryFile": "main",
      "sourceRoot": "apps/kafkaprodute/src",
      "compilerOptions": {
        "tsConfigPath": "apps/kafkaprodute/tsconfig.app.json"
      }
    },
    "kafka": {
      "type": "application",
      "root": "apps/kafka",
      "entryFile": "main",
      "sourceRoot": "apps/kafka/src",
      "compilerOptions": {
        "tsConfigPath": "apps/kafka/tsconfig.app.json"
      }
    },
    "lib": {
      "type": "library",
      "root": "libs/lib",
      "entryFile": "index",
      "sourceRoot": "libs/lib/src",
      "compilerOptions": {
        "tsConfigPath": "libs/lib/tsconfig.lib.json"
      }
    }
  }
}

Dockerfile(两个服务共用)

FROM node:lts-alpine

WORKDIR /usr/src/app

COPY package*.json .

RUN npm install

COPY . .

package.json

{
  "name": "kafkaprodute",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "build": "nest build",
    "format": "prettier --write \"apps/**/*.ts\" \"libs/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/apps/kafkaprodute/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./apps/kafkaprodute/test/jest-e2e.json",
    "typeorm": "typeorm-ts-node-esm --dataSource ./dist/apps/kafka/apps/kafka/src/db/data-source-cli.js"
  },
  "dependencies": {
    "@nestjs/common": "^10.0.0",
    "@nestjs/core": "^10.0.0",
    "@nestjs/platform-express": "^10.0.0",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^7.8.1"
  },
  "devDependencies": {
    "@nestjs/cli": "^10.0.0",
    "@nestjs/config": "^3.2.2",
    "@nestjs/mapped-types": "^2.0.5",
    "@nestjs/microservices": "^10.3.7",
    "@nestjs/schematics": "^10.0.0",
    "@nestjs/testing": "^10.0.0",
    "@nestjs/typeorm": "^10.0.2",
    "@types/bcrypt": "^5.0.2",
    "@types/express": "^4.17.17",
    "@types/jest": "^29.5.2",
    "@types/kafkajs": "^1.9.0",
    "@types/node": "^20.3.1",
    "@types/supertest": "^6.0.0",
    "@typescript-eslint/eslint-plugin": "^6.0.0",
    "@typescript-eslint/parser": "^6.0.0",
    "bcrypt": "^5.1.1",
    "cache-manager": "^5.5.1",
    "class-validator": "^0.14.1",
    "eslint": "^8.42.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-plugin-prettier": "^5.0.0",
    "helmet": "^7.1.0",
    "jest": "^29.5.0",
    "kafkajs": "^2.2.4",
    "pg": "^8.11.5",
    "prettier": "^3.0.0",
    "source-map-support": "^0.5.21",
    "supertest": "^6.3.3",
    "ts-jest": "^29.1.0",
    "ts-loader": "^9.4.3",
    "ts-node": "^10.9.1",
    "tsconfig-paths": "^4.2.0",
    "typeorm": "^0.3.20",
    "typescript": "^5.1.3"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": ".",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "./coverage",
    "testEnvironment": "node",
    "roots": [
      "<rootDir>/apps/",
      "<rootDir>/libs/"
    ],
    "moduleNameMapper": {
      "^y/lib(|/.*)$": "<rootDir>/libs/lib/src/$1"
    }
  }
}

我检查过代码没发现明显问题,有人知道怎么解决吗?


内容的提问来源于stack exchange,提问作者J. Maciel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:54:58