CI Build issue patch - 'patch' is possibly 'undefined'.
Mantenedores costumam responder em até 3 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Bug
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- typescript
- Domínio
- build-system, ci-cd
Direção de pesquisa
Comece com a falha de build do pnpm relatada em immer/src/core/immerClass.ts:181 e com as linhas relacionadas de immer/src/utils/common.ts mostradas no patch. Verifique como o repositório lida com essa dependência e valide o build após qualquer correção no nível da dependência; considera-se concluído quando pnpm build terminar sem os erros de TypeScript relatados.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- JavaScript
- Estrelas
- 29k
- Forks
- 905
- Merge médio
- 3d 7h
- PRs com merge (30d)
- 21
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de immerjs/immer
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
Mantenedores costumam responder em até 3 dias
-
Docs: Chinese (zh-CN) website translation is outdated vs English docsTalvez livre de novo @lijiayou0728 assumiu há 92 dias e não há nenhum pull request aberto. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
immerjs/immer#1242 · 5 comentários ·
Mantenedores costumam responder em até 3 dias
-
question
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
Mantenedores costumam responder em até 3 dias
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
immerjs/immer#1217 · 1 comentário ·
Mantenedores costumam responder em até 3 dias
-
[Feature Request] Support for "Splice" patches in arrays for CRDT/Y.js integration (and others)Abertaproposal
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
immerjs/immer#1202 · 2 comentários · 1 reação ·
Mantenedores costumam responder em até 3 dias
Todas as issues de immerjs/immer
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
hypothesis/client#7592 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
fingerprintjs/fingerprintjs#1235 ·
-
Labor 09 - CSS: fájlnevekAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
complexity: trivial documentation help wanted
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
dunia-hub/stellar-402-live#47 ·
Mantenedores costumam responder em até 1 dia