Сборка Docker не может разрешить абсолютный путь - PullRequest
0 голосов
/ 31 января 2019

У меня есть приложение реагирования, в котором я использую абсолютный импорт вместо относительного импорта (https://medium.com/@ktruong008/absolute-imports-with-create-react-app-4338fbca7e3d). На моем локальном компьютере все работает как должно, но когда я пытаюсь собрать на докере, это не получается.

Iиметь файл .env, который содержит NODE_PATH='./', а create-реакции-приложение настроено таким образом, что его конфигурация веб-пакета автоматически подберет файлы .env и прочитает переменную окружения NODE_PATH, которую затем можно использовать дляабсолютный импорт, что-то вроде src/components/NavBar, разрешается.

Но когда я пытаюсь построить на докере, он не разрешается, а выдает эту ошибку.

Cannot find module: 'src/components/NavBar'. Make sure this package is installed.
You can install this package by running: yarn add src/components/NavBar.

Любые указатели приветствуются.

Сегодня я впервые работаю с Docker, поэтому я новичок.

Дополнительная информация:

Я использую файл Dockerfile и файл docker-compose.yml.

Я использую реагирующее приложение app-rewired (https://github.com/timarney/react-app-rewired), которое в основном помогает переопределить конфигурации веб-пакетов create-Reaction-app без извлечения.

Dockerfile

FROM node:10.15.1

ENV NODE_ENV production

RUN mkdir /usr/invoicing

COPY . /usr/invoicing

WORKDIR /usr/invoicing

RUN npm install

RUN npm run build

docker-compose.ymл

version: '3.5'
services:
  web:
    container_name: invoice-frontend
    build:
      context: .
      dockerfile: Dockerfile
    command: npm start
    ports:
      - '3000:3000'
    networks:
      - frontend
    environment:
      - NODE_ENV=production
networks:
  frontend:
    driver: 'bridge'

1 Ответ

0 голосов
/ 08 февраля 2019

Я нашел проблему и решение:

По-видимому, я назвал папку navBar, и когда я переименовал ее в NavBar, Git не обнаружил изменения в foldername иничего с этим не делалТак что на моей локальной машине (это Mac) он показывает NavBar, но на Gitlab, который использует коммиты git, он по-прежнему выглядит как navBar, потому что Docker работает на Linux, а Linux чувствителен к регистру, сборка завершается неудачей.

Это также объясняет, почему сборка работала на моей локальной машине.Файловая система Mac hfplus нечувствительна к регистру, поэтому она не видит проблемы.

Для решения проблемы переименования;Я использовал команду git mv.Есть предостережение, хотя;если вы хотите переименовать foldername в folderName (т.е. изменить регистр) в нечувствительных к регистру файловых системах, таких как Mac, вы получите сообщение об ошибке fatal: renaming ‘foldername’ failed: Invalid argument.

, чтобы переименовать папку успешно, используйте эту команду.git mv foldername tempname && git mv tempname folderName.Это разбивает процесс на два этапа;сначала переименуйте имя папки в tempname, а имя переименования в folderName.

Надеюсь, это кому-нибудь поможет ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...