NOOB构建一个博览会web应用程序。我试图用我的博览会web应用程序构建一个docker容器。在我运行" expo build:web "并构建成功完成后,当我尝试执行时,我得到一个运行错误。
我在app.json中定义了一个自定义入口点:" entryPoint ": " ./index.js ",
当我在docker容器中运行应用并连接到http://localhost:19006时,我得到:
./node_modules/expo/AppEntry.js:3
Module not found: Can't resolve '../../App'
我可以看到"资产清单"中定义的入口点。json文件。但我不知道如何将其称为我的起点,也不知道为什么它试图使用"…/…"/App"。
这是我的Dockerfile如果它有帮助:
FROM node:12.20.2 as build
ARG NODE_ENV=production
ENV NODE_ENV $NODE_ENV
ARG PORT=19006
ENV PORT $PORT
EXPOSE $PORT 19001 19002
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH /home/node/.npm-global/bin:$PATH
RUN npm i --unsafe-perm -g npm@latest expo-cli@latest sharp-cli
RUN mkdir /opt/web && chown node:node /opt/web
WORKDIR /opt/web
ENV PATH /opt/web/.bin:$PATH
USER node
COPY package.json ./
COPY .env.production ./.env
COPY ./private ./private
RUN yarn install --silent
RUN ls -al
WORKDIR /opt/web/app
COPY ./web-build .
RUN ls -al
ENTRYPOINT ["npm", "run"]
CMD ["web"]
我明白了!
在我的包里。json文件,我有底线:
"main": "node_modules/expo/AppEntry.js",
我把它改成:
"main": "index.js",
这在纱线启动模式下工作,但不是在生产中,所以我从来没有给它另一个看。
我还必须通过使用"serve":
来稍微更改docker文件。FROM node:12.20.2 as build
ARG NODE_ENV=production
ENV NODE_ENV $NODE_ENV
ARG PORT=19006
ENV PORT $PORT
EXPOSE $PORT 19001 19002
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH /home/node/.npm-global/bin:$PATH
RUN npm i --unsafe-perm -g npm@latest expo-cli@latest serve
RUN mkdir /opt/web && chown node:node /opt/web
WORKDIR /opt/web
ENV PATH /opt/web/.bin:$PATH
USER node
COPY package.json ./
COPY .env.production ./.env
COPY ./private ./private
RUN yarn install --silent
RUN ls -al
WORKDIR /opt/web/app
COPY ./web-build .
RUN ls -al
CMD ["serve","--no-port-switching","-p","19006"]