当 运行 到 docker 时,react-scripts 构建失败
react-scripts build fails when run through docker
当我从 docker 容器 运行 命令 react-scripts build
时出现编译错误,但当我在本地 运行 它时它可以正常工作。这些错误似乎只与打字稿有关,但我对此不是 100% 确定。我得到的错误是 Syntax error: Unexpected token, expected ","
在绝对不应该有它们的代码中。一些例子:
#16 63.56 > 11 | type Props<T extends string> = {
#16 63.56 | ^
#16 70.86 9 | export const ADDRESS_INIT_VALUE = {
#16 70.86 > 10 | country: (null as unknown) as Country,
#16 70.86 | ^
这是我正在使用的docker文件:
# syntax = docker/dockerfile:experimental
## BUILD image ##
FROM node:15.2.1-alpine3.12 AS builder
WORKDIR /web
# Copy package files
COPY ./web/package.json ./
COPY ./web/yarn.lock ./
# Install dependencies
RUN yarn install
# Copy and build app
COPY ./web ./
RUN yarn build
## RUN Image ##
FROM httpd:alpine
# Apache conf
COPY ./web/.docker/httpd.conf /usr/local/apache2/conf/httpd.conf
COPY --from=builder /web/build/ /usr/local/apache2/htdocs/
到目前为止,我已经尝试了多个节点 docker 图像,没有任何区别。我还确保我拥有与 docker 图像完全相同的节点和纱线版本。我还删除了我在本地使用的 node_modules
和 yarn.lock
,并进行了全新安装和构建,没有出现任何错误。
对于构建为何在 docker 中出现这些奇怪错误的任何建议或想法,我们将不胜感激。
查看根目录下的一些配置文件,在copy packages部分添加。
事实证明我 .eslintrc.json
被 Docker 忽略了,并且在构建期间从默认设置 eslint 规则中得到错误。
解决方案,我已将此 dockerfile 的 .dockerignore 中的所有 linter 文件列入白名单。
*
!web/.docker
!web/public
!web/src
!web/package.json
!web/yarn.lock
!web/tsconfig.json
!web/.editorconfig
!web/.eslintrc.json
!web/.prettierrc
!web/.stylelintrc
当我从 docker 容器 运行 命令 react-scripts build
时出现编译错误,但当我在本地 运行 它时它可以正常工作。这些错误似乎只与打字稿有关,但我对此不是 100% 确定。我得到的错误是 Syntax error: Unexpected token, expected ","
在绝对不应该有它们的代码中。一些例子:
#16 63.56 > 11 | type Props<T extends string> = {
#16 63.56 | ^
#16 70.86 9 | export const ADDRESS_INIT_VALUE = {
#16 70.86 > 10 | country: (null as unknown) as Country,
#16 70.86 | ^
这是我正在使用的docker文件:
# syntax = docker/dockerfile:experimental
## BUILD image ##
FROM node:15.2.1-alpine3.12 AS builder
WORKDIR /web
# Copy package files
COPY ./web/package.json ./
COPY ./web/yarn.lock ./
# Install dependencies
RUN yarn install
# Copy and build app
COPY ./web ./
RUN yarn build
## RUN Image ##
FROM httpd:alpine
# Apache conf
COPY ./web/.docker/httpd.conf /usr/local/apache2/conf/httpd.conf
COPY --from=builder /web/build/ /usr/local/apache2/htdocs/
到目前为止,我已经尝试了多个节点 docker 图像,没有任何区别。我还确保我拥有与 docker 图像完全相同的节点和纱线版本。我还删除了我在本地使用的 node_modules
和 yarn.lock
,并进行了全新安装和构建,没有出现任何错误。
对于构建为何在 docker 中出现这些奇怪错误的任何建议或想法,我们将不胜感激。
查看根目录下的一些配置文件,在copy packages部分添加。
事实证明我 .eslintrc.json
被 Docker 忽略了,并且在构建期间从默认设置 eslint 规则中得到错误。
解决方案,我已将此 dockerfile 的 .dockerignore 中的所有 linter 文件列入白名单。
*
!web/.docker
!web/public
!web/src
!web/package.json
!web/yarn.lock
!web/tsconfig.json
!web/.editorconfig
!web/.eslintrc.json
!web/.prettierrc
!web/.stylelintrc