Een achterwaartse compatibiliteitsbreuk in een populair NPM-pakket heeft bij verschillende projecten tot crashes geleid.

De NPM-repository ervaart opnieuw een enorme uitval van projecten als gevolg van problemen in de nieuwe versie van een van de populaire afhankelijkheden. De bron van de problemen was de nieuwe release van het pakket mini-css-extract-plugin 2.5.0, ontworpen om CSS in afzonderlijke bestanden te extraheren. Het pakket heeft wekelijks meer dan 10 miljoen downloads en wordt gebruikt als directe afhankelijkheid van meer dan 7 projecten.

In de nieuwe versie zijn wijzigingen aangebracht die de achterwaartse compatibiliteit schonden bij het importeren van de bibliotheek en die tot een fout leidden bij het gebruiken van de voorheen geldige en in de documentatieconstructie beschreven β€œconst MiniCssExtractPlugin = require('mini-css-extract-plugin') ”, die bij het overschakelen naar de nieuwe versie vervangen moest worden door β€œconst MiniCssExtractPlugin = require(β€œmini-css-extract-plugin”).default”.

Het probleem manifesteerde zich in projecten die niet expliciet gebonden waren aan het versienummer bij het opnemen van afhankelijkheden. Als tijdelijke oplossing wordt aanbevolen om de link naar de vorige versie 2.4.5 te repareren door '"overrides": {"mini-css-extract-plugin": "2.4.5"}' toe te voegen in Yarn of door de opdracht " npm i -D" --save-exact [e-mail beveiligd]"in NPM.

Onder de slachtoffers bevonden zich gebruikers van het door Facebook ontwikkelde create-react-app-pakket, dat mini-css-extract-plugin als afhankelijkheid koppelt. Vanwege het ontbreken van binding aan het versienummer van de mini-css-extract-plugin, eindigden pogingen om create-react-app te starten met de fout "TypeError: MiniCssExtractPlugin is geen constructor". Het probleem had ook betrekking op pakketten @wordpress/scripts, @auth0/auth0-spa-js, sql-formatter-gui, LedgerSMB, vip-go-mu-plugins, cybros, vue-cli, chore, enz.

Bron: opennet.ru

Voeg een reactie