#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 не использует ни одного из них.