【问题标题】:react-scripts build fails when run through docker通过 docker 运行时 react-scripts 构建失败
【发布时间】:2021-03-04 20:30:49
【问题描述】:

当我从 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      |                       ^

这是我正在使用的 dockerfile:

# 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 和 yarn 版本。我还删除了我在本地使用的node_modulesyarn.lock,并进行了全新安装和构建,没有出现任何错误。

非常感谢任何关于构建为什么会在 docker 中出现这些奇怪错误的建议或想法。

【问题讨论】:

    标签: typescript docker create-react-app


    【解决方案1】:

    事实证明我有 .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
    

    【讨论】:

      【解决方案2】:

      查看根目录下的一些配置文件,将它们添加到复制包部分。

      【讨论】:

      • 什么配置文件? CRA 不使用任何。
      猜你喜欢
      • 2021-12-17
      • 2020-03-04
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      相关资源
      最近更新 更多