CI Build issue patch - 'patch' is possibly 'undefined'.
Maintainer antworten meist innerhalb von 4 Tagen
Dieses Issue hat noch niemand übernommen.
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
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus immerjs/immer
-
Shrinking an array with `length =` and growing it back loses the patches for the truncated indicesEvtl. vergeben @RClaudiuM hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 4 Tagen
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
Maintainer antworten meist innerhalb von 4 Tagen
-
Docs: Chinese (zh-CN) website translation is outdated vs English docsEvtl. wieder frei @lijiayou0728 hat das vor 91 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
immerjs/immer#1242 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 4 Tagen
-
question
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
Maintainer antworten meist innerhalb von 4 Tagen
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
immerjs/immer#1217 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 4 Tagen
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Automattic/node-canvas#2633 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
capricorn86/happy-dom#2594 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 79/100
microsoft/monaco-editor#5575 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 1 Tag