CI Build issue patch - 'patch' is possibly 'undefined'.

Offen
#1,143 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 4 Tagen

Dieses Issue hat noch niemand übernommen.

  • #1240 von @mixelburg — ohne Merge geschlossen
  • #1317 von @cpruijsen — ohne Merge geschlossen

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
25/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
typescript
Bereich
build-system, ci-cd

Rechercherichtung

Beginne mit dem gemeldeten pnpm-Build-Fehler in immer/src/core/immerClass.ts:181 und den zugehörigen Zeilen in immer/src/utils/common.ts, die im Patch gezeigt werden. Prüfe, wie diese Abhängigkeit vom Repository behandelt wird, und verifiziere den Build nach jeder Korrektur auf Abhängigkeitsebene; als erledigt gilt dies, wenn pnpm build ohne die gemeldeten TypeScript-Fehler erfolgreich abgeschlossen wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Hi! 👋

I was getting following error while doing build

./node_modules/.pnpm/[email protected]/node_modules/immer/src/core/immerClass.ts:181:8
Type error: 'patch' is possibly 'undefined'.
  179 | 		for (i = patches.length - 1; i >= 0; i--) {
  180 | 			const patch = patches[i]
> 181 | 			if (patch.path.length === 0 && patch.op === "replace") {
      | 			    ^
  182 | 				base = patch.value
  183 | 				break
  184 | 			}
 ELIFECYCLE  Command failed with exit code 1.
Error: Command "pnpm build" exited with 1

Here is the diff that solved my problem:

diff --git a/node_modules/immer/src/core/immerClass.ts b/node_modules/immer/src/core/immerClass.ts
index f827361..37bb8c9 100644
--- a/node_modules/immer/src/core/immerClass.ts
+++ b/node_modules/immer/src/core/immerClass.ts
@@ -1,30 +1,30 @@
 import {
-	IProduceWithPatches,
+	DRAFT_STATE,
+	Draft,
+	Drafted,
 	IProduce,
+	IProduceWithPatches,
 	ImmerState,
-	Drafted,
-	isDraftable,
-	processResult,
-	Patch,
+	NOTHING,
 	Objectish,
-	DRAFT_STATE,
-	Draft,
+	Patch,
 	PatchListener,
-	isDraft,
-	isMap,
-	isSet,
 	createProxyProxy,
-	getPlugin,
+	current,
 	die,
 	enterScope,
-	revokeScope,
-	leaveScope,
-	usePatchesInScope,
-	getCurrentScope,
-	NOTHING,
 	freeze,
-	current
-} from "../internal"
+	getCurrentScope,
+	getPlugin,
+	isDraft,
+	isDraftable,
+	isMap,
+	isSet,
+	leaveScope,
+	processResult,
+	revokeScope,
+	usePatchesInScope
+} from "../internal";
 
 interface ProducersFns {
 	produce: IProduce
@@ -178,7 +178,7 @@ export class Immer implements ProducersFns {
 		let i: number
 		for (i = patches.length - 1; i >= 0; i--) {
 			const patch = patches[i]
-			if (patch.path.length === 0 && patch.op === "replace") {
+			if (patch?.path?.length === 0 && patch?.op === "replace") {
 				base = patch.value
 				break
 			}
diff --git a/node_modules/immer/src/utils/common.ts b/node_modules/immer/src/utils/common.ts
index 692157b..8db10ba 100644
--- a/node_modules/immer/src/utils/common.ts
+++ b/node_modules/immer/src/utils/common.ts
@@ -1,14 +1,14 @@
 import {
-	DRAFT_STATE,
-	DRAFTABLE,
-	Objectish,
-	Drafted,
-	AnyObject,
 	AnyMap,
+	AnyObject,
 	AnySet,
-	ImmerState,
 	ArchType,
 	die,
+	DRAFT_STATE,
+	DRAFTABLE,
+	Drafted,
+	ImmerState,
+	Objectish,
 	StrictMode
 } from "../internal"
 
@@ -160,14 +160,14 @@ export function shallowCopy(base: any, strict: StrictMode) {
 		for (let i = 0; i < keys.length; i++) {
 			const key: any = keys[i]
 			const desc = descriptors[key]
-			if (desc.writable === false) {
+			if (desc?.writable === false) {
 				desc.writable = true
 				desc.configurable = true
 			}
 			// like object.assign, we will read any _own_, get/set accessors. This helps in dealing
 			// with libraries that trap values, like mobx or vue
 			// unlike object.assign, non-enumerables will be copied as well
-			if (desc.get || desc.set)
+			if (desc?.get || desc?.set)
 				descriptors[key] = {
 					configurable: true,
 					writable: true, // could live with !!desc.set as well here...

This issue body was partially generated by patch-package.

Vorherrschende Sprache
JavaScript
Sterne
29k
Forks
905
Ø Merge
3 T. 16 Std.
Gemergte PRs (30 T.)
22

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus immerjs/immer

Alle Issues in immerjs/immer

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.