javascript - Docker 中的 Angular 构建失败 [ERR_STREAM_DESTROYED]:流被销毁后无法调用 write
问题描述
我有以下 docker 文件来构建一个 Angular 项目
FROM node:12-buster-slim as build-step
RUN mkdir -p /app
COPY . /app
WORKDIR /app
RUN chmod 777 -R /app
RUN npm install
ARG configuration=production
RUN npm run build -- --output-path=./dist/out --configuration $configuration
FROM nginx:alpine
COPY --from=build-step /app/build/out/ /usr/share/nginx/html
COPY nginx.conf /etc/nginx/default.conf
EXPOSE 80
构建阶段失败并出现以下错误
#15 80.97 /app/node_modules/esbuild/bin/esbuild: 2: /app/node_modules/esbuild/bin/esbuild: Cy�: not found
#15 80.97 /app/node_modules/esbuild/bin/esbuild: 3: /app/node_modules/esbuild/bin/esbuild: Syntax error: word unexpected (expecting ")")
#15 84.20 ✔ Browser application bundle generation complete.
#15 84.21 ✔ Browser application bundle generation complete.
#15 84.23
#15 84.23 /app/src/@fuse/components/alert/alert.component.scss - Error: /app/src/@fuse/components/alert/alert.component.scss from Css Minimizer
#15 84.23 Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
#15 84.23 at doWrite (_stream_writable.js:399:19)
#15 84.23 at writeOrBuffer (_stream_writable.js:387:5)
#15 84.23 at Socket.Writable.write (_stream_writable.js:318:11)
#15 84.23 at Object.writeToStdin (/app/node_modules/esbuild/lib/main.js:1723:19)
#15 84.23 at sendRequest (/app/node_modules/esbuild/lib/main.js:617:14)
#15 84.23 at start (/app/node_modules/esbuild/lib/main.js:1292:9)
#15 84.23 at Object.transform2 [as transform] (/app/node_modules/esbuild/lib/main.js:1302:5)
#15 84.23 at /app/node_modules/esbuild/lib/main.js:1779:55
#15 84.23 at new Promise (<anonymous>)
#15 84.23 at Object.transform (/app/node_modules/esbuild/lib/main.js:1779:14)
#15 84.23
#15 84.23 /app/src/@fuse/components/card/card.component.scss - Error: /app/src/@fuse/components/card/card.component.scss from Css Minimizer
#15 84.23 Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
#15 84.23 at doWrite (_stream_writable.js:399:19)
#15 84.23 at writeOrBuffer (_stream_writable.js:387:5)
#15 84.23 at Socket.Writable.write (_stream_writable.js:318:11)
#15 84.23 at Object.writeToStdin (/app/node_modules/esbuild/lib/main.js:1723:19)
#15 84.23 at sendRequest (/app/node_modules/esbuild/lib/main.js:617:14)
#15 84.23 at start (/app/node_modules/esbuild/lib/main.js:1292:9)
#15 84.23 at Object.transform2 [as transform] (/app/node_modules/esbuild/lib/main.js:1302:5)
#15 84.23 at /app/node_modules/esbuild/lib/main.js:1779:55
#15 84.23 at new Promise (<anonymous>)
#15 84.23 at Object.transform (/app/node_modules/esbuild/lib/main.js:1779:14)
有任何想法吗?
解决方案
经过数小时的调试,发现以下作为修复 RUNnpm install exit-on-epipe
这会导致流安全退出。
FROM node:lts-buster as build-step
RUN mkdir -p /app
COPY . /app
WORKDIR /app
RUN chmod 777 -R /app
RUN npm install exit-on-epipe
RUN npm install
ARG configuration=production
RUN npm run build -- --output-path=./dist/out --configuration $configuration
FROM nginx:alpine
COPY --from=build-step /app/dist/out/ /usr/share/nginx/html
COPY nginx.conf /etc/nginx/default.conf
EXPOSE 80
推荐阅读
- google-api - 谷歌 javascript api 客户端,自动登录同一个帐户而不弹出
- node.js - 安装 node.js、npm 和无服务器时出错
- azure-data-factory - Azure 数据工厂 - 复制并行度
- sql-server - Acumatica:自定义表架构在发布时导致错误
- python - 正则表达式花费太多时间
- python - 对 groupby 对象执行更复杂的计算
- python - 如何在 Digital Micrograph 中的 dm-script 和 python 之间进行通信
- react-native - 根据状态值更改背景颜色
- php - Laravel 设置 Pdf 保护
- reactjs - 使用 oidc-client 和客户端密码反应 SPA