我有一个使用mongodb和redis的应用程序。
我想在docker-compose上执行测试,但是每次运行测试时,都会收到以下错误。
命令: docker-compose -p tests run --rm main npm run test
错误:
FAIL test/content/document/content.document.test.ts
● Test suite failed to run
Cannot find module 'request'
at node_modules/request-promise-native/lib/rp.js:8:12
at module.exports (node_modules/stealthy-require/lib/index.js:62:23)
at Object.<anonymous> (node_modules/request-promise-native/lib/rp.js:7:15)
我尝试安装request
但没有成功。
这些测试无需docker-compose即可在本地成功运行。
docker-compose.yml:
version: '3.7'
services:
main:
build:
context: .
target: development
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 8080:8080
command: npm run start:dev
networks:
- webnet
depends_on:
- redis
- mongodb
redis:
container_name: redis
image: redis:5
networks:
- webnet
mongodb:
container_name: mongodb
environment:
- MONGO_INITDB_DATABASE=database
- MONGO_INITDB_ROOT_USERNAME=username
- MONGO_INITDB_ROOT_PASSWORD=password
image: mongo:4.2.6
restart: always
networks:
- webnet
ports:
- '27017:27017'
networks:
webnet:
Dockerfile:
# https://blog.logrocket.com/containerized-development-nestjs-docker/
FROM node:10.20.1-alpine3.11 As development
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --only=development
COPY . .
RUN npm run build
FROM node:10.20.1-alpine3.11 as production
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /usr/src/app
ENV PORT=8080
COPY package*.json ./
RUN npm install --only=production
COPY . .
COPY --from=development /usr/src/app/dist ./dist
CMD ["node", "dist/main"]
package.json
{
"name": "jest-docker",
"version": "0.0.1",
"private": true,
"description": "",
"license": "MIT",
"author": "",
"main": "dist/main.js",
"scripts": {
"prebuild": "rimraf dist",
"build": "nest build",
"build:docker": "docker build -t paperbot .",
"deploy": "npm run build && gcloud app deploy --quiet",
"docker": "PORT=8080 docker-compose up --build --rm -V",
"start": "NODE_PATH=. npm run start:prod",
"start:dev": "PORT=8080 NODE_PATH=. nest start --watch",
"start:prod": "NODE_PATH=. node dist/main.js",
"test": "NODE_PATH=. ts-node ./dck",
"test:docker": "docker-compose -p tests run --rm main npm run test"
},
"dependencies": {
"@nestjs/bull": "^0.1.1",
"@nestjs/common": "^6.11.11",
"@nestjs/config": "^0.4.2",
"@nestjs/core": "^6.11.11",
"@nestjs/cqrs": "^7.0.0",
"@nestjs/platform-express": "^6.11.11",
"@slack/bolt": "^2.1.1",
"bull": "^3.14.0",
"class-transformer": "^0.2.3",
"class-validator": "^0.12.2",
"embedly": "^2.1.1",
"express": "^4.17.1",
"js-video-url-parser": "^0.4.1",
"mongodb": "^3.5.8",
"node-nlp": "^4.4.0",
"raw-body": "^2.4.1",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.5.5",
"tsscmp": "^1.0.6",
"unfluff": "^3.2.0"
},
"devDependencies": {
"@nestjs/cli": "^7.2.0",
"@nestjs/testing": "^6.11.11",
"@release-it/conventional-changelog": "^1.1.4",
"@testdeck/jest": "^0.1.0",
"@types/bull": "^3.13.0",
"@types/express": "^4.17.6",
"@types/jest": "^23.3.13",
"@types/mongodb": "^3.5.18",
"@types/node": "^10.17.24",
"@types/qs": "^6.9.3",
"@types/supertest": "^2.0.9",
"@types/tsscmp": "^1.0.0",
"@typescript-eslint/eslint-plugin": "^3.0.2",
"@typescript-eslint/parser": "^3.0.2",
"concurrently": "^4.1.2",
"dockest": "^2.0.2",
"eslint": "^7.1.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-json-format": "^2.0.1",
"eslint-plugin-prettier": "^3.1.3",
"jest": "^26.0.1",
"jest-sonar-reporter": "^2.0.0",
"prettier": "^1.19.1",
"release-it": "^13.6.1",
"rimraf": "^2.7.1",
"supertest": "^3.4.1",
"ts-jest": "^26.0.0",
"ts-node": "8.1.0",
"tsconfig-paths": "3.8.0",
"typescript": "^3.9.3"
},
"engines": {
"node": ">=10.0.0"
},
"jestSonar": {
"reportPath": "coverage",
"reportFile": "test-reporter.xml",
"indent": 2
}
}
我也尝试了Dockest,并得到了相同的错误。
如您所见,request
模块也不是依赖项的一部分devDependencies
,请运行
npm install request --production
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句