NestJS在Docker容器执行seed:ambassadors脚本提示missing script问题求助
问题:Docker容器内执行npm脚本提示找不到seed:ambassadors
通过docker-compose exec backend sh进入Docker容器后,执行npm run seed:ambassadors时收到如下错误:
npm ERR! missing script: seed:ambassadors npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2022-12-29T11_33_08_599Z-debug.log
本地package.json的scripts配置已包含该脚本:
"scripts": { "prebuild": "rimraf dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/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 ./test/jest-e2e.json", "seed:ambassadors": "ts-node src/command/ambassador.seeder.ts" },
已配置对应的docker-compose.yaml(附截图),求解决建议。
解决建议
- 检查容器内的package.json:进入容器后执行
cat package.json | grep seed:ambassadors,确认脚本是否存在。若不存在,说明镜像构建时未同步本地更新后的package.json,需重新构建镜像。 - 验证挂载配置:查看docker-compose.yaml中backend服务的本地目录挂载规则,确认项目根目录(含package.json)是否正确映射到容器内对应路径。挂载错误会导致容器读取镜像内旧的package.json文件。
- 检查镜像构建流程:若使用Dockerfile构建,确保文件中包含
COPY package*.json ./命令,且构建时使用了最新的package.json。执行docker-compose build backend重新构建镜像。 - 确认容器工作目录:进入容器后执行
pwd,查看当前路径是否为项目根目录(package.json所在位置),若不是则切换到对应目录再执行脚本。 - 清理npm缓存:在容器内执行
npm cache clean --force,清除缓存后重新尝试运行脚本。
内容的提问来源于stack exchange,提问作者holoyo
相关产品推荐
相关产品推荐

