expo build:web docker无法找到正确的入口点



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"]

相关内容

  • 没有找到相关文章