npm run build
(vue-cli-service build
)上的Docker错误我正在容器化一个应用程序,以便在具有kubernetes的云服务上使用它。但是在我的Dockerfile的构建阶段,vue-cli-plugin-quasar出现了错误。
在docker构建过程中,可能与quasar软件包和对外部软件包的访问有关,但是我对docker不满意。
我在管理软件包(npm i,审计等)之前尝试使用RUN npm i -g @vue/cli
。
在搜索此问题时一无所获。
FROM node:12 as dev-stage
WORKDIR /my-app
COPY package*.json ./
COPY server/ ./server
COPY src/ ./src
RUN npm install -g @vue/cli
RUN npm i
RUN npm audit fix
RUN cd server && npm i
RUN cd server && npm audit fix
FROM dev-stage as build-stage
RUN npm run build
此后我还有更多阶段,但是错误发生在构建中
FROM node:12 as dev-stage
WORKDIR /my-app
COPY package*.json ./
COPY server/ ./server
COPY src/ ./src
RUN npm install -g @vue/cli
RUN npm i
RUN npm audit fix
RUN cd server && npm i
RUN cd server && npm audit fix
RUN npm run build
ERROR TypeError: Cannot read property 'quasar' of undefined
TypeError: Cannot read property 'quasar' of undefined
at module.exports (/my-app/node_modules/vue-cli-plugin-quasar/index.js:2:29)
at /my-app/node_modules/@vue/cli-service/lib/Service.js:83:7
at Array.forEach (<anonymous>)
at Service.init (/my-app/node_modules/@vue/cli-service/lib/Service.js:81:18)
at Service.run (/my-app/node_modules/@vue/cli-service/lib/Service.js:221:10)
at Object.<anonymous> (/my-app/node_modules/@vue/cli-service/bin/vue-cli-service.js:37:9)
at Module._compile (internal/modules/cjs/loader.js:936:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
at Module.load (internal/modules/cjs/loader.js:790:32)
at Function.Module._load (internal/modules/cjs/loader.js:703:12)
糟糕:我在npm i
之后列出了我的node_modules文件夹,并且那里有quasar软件包
答案 0 :(得分:0)
我可以通过如下的多阶段构建来克服此问题:
FROM node:12.14.1-alpine3.11 as get-sources
RUN apk add --no-cache bash && \
apk update && \
apk upgrade && \
apk add git && \
apk add openssh-client
.....
RUN git clone ssh://git@private-repo.com/user/Project.git
FROM node:12.14.1-alpine3.11 as build-stage
RUN apk update && apk add python make g++ && \
npm config --global set python2 /usr/bin/python
WORKDIR /app
# copy the repository form the previous stage
COPY --from=get-sources /Project/src ./
# get dependencies
RUN yarn install --production
COPY ./ .
RUN yarn build
......
# copy dist to final production stage
基本上不是仅复制package.json并仅基于该内容安装/构建该应用程序,而是复制了该应用程序的整个源,并在该上下文中构建了该应用程序。然后在下一步中,仅将/ dist内容复制到最终位置。