Проблема компилятора с npm React package-lock. json "autoprefixer" версии 9.8.1 - PullRequest
0 голосов
/ 20 июня 2020

Только что установил React npx create-react-app client и не смог скомпилировать при запуске из-за ошибки ...autoprefixer/node_modules/kleur' do not define a valid './colors' target. Я переустановил, он запустился, но снова не удалось запустить одновременно с сервером express.

Копаем дальше ... Kleur (версия 4.0.1) - это зависимость для "autoprefixer" в пакете -lock. json файл (версия 9.8.1). Я заметил, что yarn.lock ссылается на версию kleur 3.0.3, хотя версия 4.0.1 была установлена ​​в node_modules. Несколькими днями ранее я установил клиент React, в котором «autoprefixer» (версия 9.8.0) использовал «chalk» без зависимости от «kleur», и у которого не было проблем с запуском.

Хотя не совсем понимаю проблема, я заменил фрагмент кода "autoprefixer" (v. 9.8.1) во вновь установленном клиентском файле package-lock. json на ранее установленную версию (9.8.0) и, похоже, решил проблему компилятора . Любопытно, что ссылки на kleur@^4.0.1 в node_modules, похоже, переключились на kleur@^3.0.3 после того, как я внес изменения, которые я не могу объяснить.

Кто-нибудь думает?

1 Ответ

1 голос
/ 22 июня 2020

После тщательного расследования я нашел проблему. Проблема была в файле autoprefixer.js, который является частью зависимостей в node_modules. Как я понял, система не смогла найти адрес модуля Kleur. Просто go в этот файл по следующему пути:

node_modules > autoprefixer > lib > autoprefixer.js

в этом файле измените значение переменной kleur с:

var kleur = require('kleur/colors');

на

var kleur = require('../node_modules/kleur/colors');

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

...