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

Ouverte
#1,143 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 4 jours

Personne n'a encore pris cette issue.

  • #1240 par @mixelburg — fermée sans fusion
  • #1317 par @cpruijsen — fermée sans fusion

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
typescript
Domaine
build-system, ci-cd

Piste de recherche

Commencez par l’échec de compilation de pnpm signalé dans immer/src/core/immerClass.ts:181 et les lignes correspondantes de immer/src/utils/common.ts montrées dans le patch. Vérifiez comment cette dépendance est gérée par le dépôt et vérifiez la compilation après toute correction au niveau de la dépendance ; c’est terminé lorsque pnpm build s’achève sans les erreurs TypeScript signalées.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
JavaScript
Étoiles
29k
Forks
905
Merge moyen
3 j 16 h
PR mergées (30 j)
22

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de immerjs/immer

Toutes les issues de immerjs/immer

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.