如何用Docker构建TypeScript项目?执行tsc时遇错误求助
Docker构建TypeScript项目tsc编译报错排查与解决
问题详情
用Docker构建TypeScript项目时,执行tsc编译环节报错。相关配置及报错信息如下:
Dockerfile内容
FROM node:alpine AS build # Create app directory RUN mkdir -p /app WORKDIR /app COPY package.json . RUN npm install COPY . . RUN npm run build:tsc # RUN npx tsc -p ./tsconfig.json # Second stage: run things. FROM node:12 WORKDIR /app # Install the Javascript dependencies, only runtime libraries. COPY package.json . COPY --from=build /app/dist dist CMD ["npm","run", "start:dev"]
package.json脚本配置
"start": "node ./dist/server", "start:dev": "nodemon ./dist/server | bunyan", "watch:tsc": "tsc --watch -p ./tsconfig.json", "build:tsc": "tsc -p ./tsconfig.json", "heroku-postbuild": "npm run build:tsc",
具体报错
执行npm run build:tsc时抛出错误:
error TS5058: The specified path does not exist: './tsconfig.json'.
解决办法
检查
tsconfig.json是否被正确复制- 确认本地项目根目录确实存在
tsconfig.json文件 - 查看项目根目录的
.dockerignore文件,如果里面包含tsconfig.json,立即移除该规则,否则Docker会跳过复制这个文件
- 确认本地项目根目录确实存在
验证路径正确性
确认tsconfig.json在项目根目录,而非子文件夹中。如果配置文件在子目录,修改package.json中的编译脚本路径,比如tsc -p ./src/tsconfig.json临时排查:使用绝对路径编译
在Dockerfile中把编译命令改成绝对路径测试:RUN npx tsc -p /app/tsconfig.json如果能成功,说明相对路径解析有问题,但结合当前
WORKDIR已经设为/app,大概率还是文件未被复制的问题优化复制顺序(可选)
如果上述方法无效,可以调整Dockerfile的复制顺序,先复制所有文件再执行npm install(注意:会导致依赖安装缓存失效更频繁,仅作为排查手段):FROM node:alpine AS build RUN mkdir -p /app WORKDIR /app COPY . . RUN npm install RUN npm run build:tsc
内容的提问来源于stack exchange,提问作者Bazinga_
相关产品推荐
相关产品推荐

