Skip to content

TypeError: 'get' on proxy: property 'prototype' is a read-only and non-configurable data property on the proxy target #1265

Description

@dwiyatci

We're upgrading from v11.1.7 to v11.1.11, and got the aforementioned error.

Here's the minimal repro example that resembles our code:

import { produce } from "immer";
import _ from "lodash";

const baseState = [
  { title: "Learn Macroeconomics", done: false },
  { title: "Try Immer", done: false },
];

const nextState = produce(baseState, (draftState) => {
  draftState.push({ title: "Tweet about it" });
  draftState[1].done = true;

  if (
    _.isEqual(draftState, [
      { title: "Learn Macroeconomics", done: false },
      { title: "Try Immer", done: true },
      { title: "Tweet about it" },
    ])
  ) {
    console.log("yay!");
  }
});

console.log({ baseState, nextState });

It throws:

TypeError: 'get' on proxy: property 'prototype' is a read-only and non-configurable data property on the proxy target but the proxy did not return its actual value (expected '#<Object>' but got '[object Object]')
    at isPrototype (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:6475:54)
    at baseKeys (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:3530:12)
    at keys (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:13406:60)
    at baseGetAllKeys (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:3099:20)
    at getAllKeys (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:5947:14)
    at equalObjects (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:5865:22)
    at baseIsEqualDeep (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:3380:14)
    at baseIsEqual (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:3321:14)
    at equalArrays (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:5757:17)
    at baseIsEqualDeep (/Users/Glenn/node_modules/.pnpm/lodash@4.18.1/node_modules/lodash/lodash.js:3361:13)

Just wanted to quickly confirm whether this is expected after v11.1.8...v11.1.9, and whether wrapping draftState with current is the right call here, i.e. current(draftState)? 🙏

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions