сбой сборки реактивных скриптов при запуске через docker

#typescript #docker #create-react-app

#машинописный текст #докер #create-react-app

Вопрос:

Я получаю ошибки компиляции react-scripts build при запуске команды из контейнера docker, но она работает без проблем, когда я запускаю ее локально. Ошибки, похоже, связаны исключительно с typescript, но я не уверен в этом на 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/
 

До сих пор я пробовал несколько образов node docker, без разницы. Я также убедился, что у меня точно такая же версия node и yarn, как у образа docker. Я также удалил node_modules и yarn.lock , который я использую локально, и выполнил чистую установку и сборку, которые не дали никаких ошибок.

Любые предложения или идеи о том, почему сборка выдает эти странные ошибки в docker, были бы очень признательны.

Ответ №1:

Оказывается, я был .eslintrc.json проигнорирован Docker и получал ошибки из настроек по умолчанию eslint правила во время сборки.

Решение, я внес в белый список все файлы linter в .dockerignore этого dockerfile.

 *

!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:

Посмотрите на некоторые файлы конфигурации в корневом каталоге и добавьте их в раздел копирования пакетов.

Комментарии:

1. Какие конфигурационные файлы? CRA не использует ни одного из них.