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
相关产品推荐
相关产品推荐

