npm React package-lock.json "autoprefixer" 版本 9.8.1 的编译器问题

Compiler issue with npm React package-lock.json "autoprefixer" version 9.8.1

刚刚安装了 React npx create-react-app client,启动时编译失败并引用错误 ...autoprefixer/node_modules/kleur' do not define a valid './colors' target。我重新安装,它启动了,但是当它与快速服务器同时启动时又失败了。

进一步挖掘... Kleur(版本 4.0.1)是 package-lock.json 文件(版本 9.8.1)中“autoprefixer”的依赖项。我注意到 yarn.lock 引用的是 kleur 3.0.3 版,尽管 node_modules 中安装了 4.0.1 版。几天前,我安装了一个 React 客户端,其中“autoprefixer”(版本 9.8.0)使用“chalk”,没有“kleur”依赖,并且启动没有问题。

虽然不是很明白问题所在,但我将新安装的客户端包-lock.json文件中的“autoprefixer”代码片段(v. 9.8.1)替换为之前安装的版本(9.8.0)它似乎已经解决了编译器问题。奇怪的是,在我做出更改后,node_modules 中对 kleur@^4.0.1 的引用似乎切换到了 kleur@^3.0.3,我无法解释。

有人有想法吗?

经过大量调查,我发现了问题所在。问题出在 autoprefixer.js 文件中,它是 node_modules 中依赖项的一部分。据我了解,系统找不到 Kleur 模块的地址。只需在以下路径中转到此文件:

node_modules > autoprefixer > lib > autoprefixer.js

在此文件中将 kleur 变量的值从 :

更改为
var kleur = require('kleur/colors');

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

我通过比较这个模块的地址和同一文件中的其他模块的地址找到了这个。如果你将鼠标悬停在其他模块上,比如 postcss 你可以看到它有一个完整的地址但是这个模块 kleur 没有这样的地址所以当我将地​​址更改为新值时它现在显示完整地址和其他模块一样,它对我有用。