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

Abierto
#1,143 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 4 días

Nadie ha tomado este issue todavía.

  • #1240 de @mixelburg — cerrado sin fusionar
  • #1317 de @cpruijsen — cerrado sin fusionar

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
typescript

Línea de trabajo

Comienza con el fallo de compilación de pnpm informado en immer/src/core/immerClass.ts:181 y las líneas relacionadas de immer/src/utils/common.ts que se muestran en el parche. Comprueba cómo gestiona el repositorio esta dependencia y verifica la compilación después de cualquier corrección a nivel de dependencia; se considera completado cuando pnpm build termina sin los errores de TypeScript informados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
JavaScript
Estrellas
29k
Forks
905
Merge medio
3 d 16 h
PR fusionados (30 d)
22

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de immerjs/immer

Todos los issues de immerjs/immer

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.