предварительный импорт проекта завершается с ошибкой в разных ОС

#javascript #centos #preact

#javascript #centos #упреждающий

Вопрос:

Я запускаю проект preact preact build и выполняю импорт следующим образом:

import PresenceToggleAlert from 'async?name=presenceToggleAlert!components/alerts/PresenceToggleAlert';

Мой фактический маршрут components/alerts/presenceToggleAlert (без заглавной буквы P )

Я тестировал на macOS, ubuntu и Windows и работает отлично, но на данный момент на моем сервере jenkins корпус внезапно становится проблемой, выдавая ошибку следующим образом:

ERROR ./components/alerts/alertContainer/index.js
Module not found: Error: Can't resolve 'components/alerts/PresenceToggleAlert' in './src/components/alerts/alertContainer'
 @ ./components/alerts/alertContainer/index.js 39:0-103 131:22-41
 @ ./components/framework/page/index.js
 @ ./index.js
 

Кто-нибудь знает, в чем может быть проблема? Я не могу понять, почему это работает локально, но не на удаленной машине.

Мой сервер работает на CentOS 6.5 и имеет версию Jenkins 2.263.4

Ответ №1:

Файловая система Linux (в вашем случае CentOS) чувствительна к регистру, в то время как Windows не чувствительна к регистру. В случае macOS это зависит от того, что вы выберете во время установки.

Измените свой код на нижний регистр p , так как именно там находится фактический файл. Так и должно быть

 import PresenceToggleAlert from 'async?name=presenceToggleAlert!components/alerts/presenceToggleAlert';
 

Или, если вы хотите переименовать сам файл, то в окне Window вы не можете просто изменить регистр. Обычно Git игнорирует это, и фиксировать будет нечего. Зафиксируйте его в два этапа. Сначала измените файл на какое-либо временное имя. Затем выполните фиксацию. Снова переименуйте временный файл в фактический файл, который вы хотите, и снова выполните фиксацию. Кроме того, прежде чем вносить изменения, вы можете просто объединить свои коммиты в один коммит.