Skip to content
This repository has been archived by the owner on Sep 1, 2024. It is now read-only.

15.8.0: checkPropTypes sometimes throws: Cannot read properties of undefined (reading 'hasOwnProperty') #369

Closed
kaiyoma opened this issue Jan 4, 2022 · 11 comments · Fixed by #370

Comments

@kaiyoma
Copy link

kaiyoma commented Jan 4, 2022

I tried upgrading from 15.7.2 to 15.8.0 in my project and now I'm getting this error on some of our unit tests:

Warning: Failed prop type: Cannot read properties of undefined (reading 'hasOwnProperty')

I've double-checked that I'm not passing undefined or null to checkPropTypes; all the data is valid and intact. This seems like an error inside checkPropTypes itself.

@ljharb
Copy link
Contributor

ljharb commented Jan 4, 2022

aha - I do see one incorrect usage of .hasOwnProperty in factoryWithTypeCheckers, added in #198 and included in v15.8.0. I'll get a fix out shortly.

@ljharb
Copy link
Contributor

ljharb commented Jan 4, 2022

Any chance you could provide the propType code you're using that generates that, so I can write a test case?

@kaiyoma
Copy link
Author

kaiyoma commented Jan 4, 2022

From what I can tell, our unit test code is passing PropTypes.exact(...) as the first argument to checkPropTypes and then passing an object that should validate.

@ljharb
Copy link
Contributor

ljharb commented Jan 4, 2022

Thanks! I'll see if i can repro it.

@ljharb
Copy link
Contributor

ljharb commented Jan 4, 2022

hmm, that doesn't seem to do it. Can you perhaps provide the exact code you're using?

@kaiyoma
Copy link
Author

kaiyoma commented Jan 4, 2022

Unfortunately this particular unit test code is kind of convoluted (and proprietary), so extracting a workable example isn't that easy. We're passing a multi-level object to PropTypes.exact and a multi-level object as the data to test. It's very difficult to tell which property at which level is causing the problem.

@ljharb
Copy link
Contributor

ljharb commented Jan 4, 2022

I was able to reproduce it with a custom propType, but it'd be ideal to use non-contrived code if you can provide it :-)

@kaiyoma
Copy link
Author

kaiyoma commented Jan 4, 2022

It really won't be easy for me to provide it (and would require an investment of time I don't have), so I would suggest using your custom prop-type in the interest of getting out a quick fix.

@ljharb
Copy link
Contributor

ljharb commented Jan 5, 2022

Filed #370; that should do it. I'll have it released shortly.

@ljharb
Copy link
Contributor

ljharb commented Jan 5, 2022

v15.8.1 is released.

@kaiyoma
Copy link
Author

kaiyoma commented Jan 5, 2022

Thanks for the quick fix! I just tried it out and my unit tests are passing again. 🎉

MichaelBuessemeyer added a commit to scalableminds/prop-types that referenced this issue May 17, 2024
* Include CI for master branch and PR's

In accordance with facebook#19,
includes config for TravisCI to run test reports on the master branch
and PR's to the master branch.

- Includes .travis.yml config file
- Includes current CI status badge in README

Closes facebook#19.

* Point readme to correct docs for production builds (facebook#153)

After an update to the docs, the production build was pointing to an outdated link. This commit directs the link to the appropriate location in the React docs.

* 15.6.1

* Add 15.6.1 to CHANGELOG

* Updated vars with consts and lets in PropTypesProductionReact15-test.js

* Updated vars to consts and lets in PropTypesDevelopmentReact15.js

* Updated vars to consts and lets in PropTypesDevelopmentStandalone-test.js

* Updated vars to consts and lets in PropTypesProductionStandalone-test.js

* Add example for `PropTypes.exact`

* Show that shapes can have required properties

* Move explanation of `isRequired` and show it in `PropTypes.shape`

* Remove trailing spaces

* Remove fbjs dependency

* Preserve "Invariant Violation" name

* 15.6.2

* .com

* Add support for objects with a null prototype in objectOf

* Replace `hasOwnProperty` with the more robust "has" package

* Revert "Replace `hasOwnProperty` with the more robust "has" package"

This reverts commit e6a9b28.

* Inline the `has` module

* missed semicolon

* [Tests] use componentName in getPropTypeWarningMessage instead of hard-coded testComponent

* [Fix] Fix `oneOf` when used with Symbols

- Fixes error due to an attempt to coerce a Symbol to a string
- Improves formatting of the "expected" portion of the generated
  warning, outputting for example `["Symbol(A)","Symbol(B)"]` rather
  than `[null,null]`

Fixes facebook#10

* Completely remove envify in favor of loose-envify

Closes facebook#203.

* [New] Add `.elementType`

* Add license to readme

* [Fix] Support validation when hasOwnProperty is not in prototype

Closes facebook#183; relates to facebook#112.

* [Docs] fix relative release date to be absolute

* [Docs] Fix typo in example

* [New] add `PropTypes.resetWarningCache`

* [dev deps] update `loose-envify`

* `oneOf`: improve warning when multiple arguments are supplied

Adds a different warning message for multiple arguments supplied to oneOf. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]) and this should help developers identifying the error.

* [changelog] update repo links

* v15.7.0

* [Fix] avoid template literal syntax

Fixes facebook#255. Fixes facebook#254.

* v15.7.1

* [Tests] add `eslint`; run more travis tests

* [Tests] run tests with multiple react versions

* [Fix] move `loose-envify` back to production deps, for browerify usage

Fixes facebook#203

* [Tests] add additional passing tests

* [Fix] ensure nullish values in `oneOf` do not crash

Fixes facebook#256.

* [dev deps] update `browserify`

* v15.7.2

* [Docs] Improve wording for `checkPropTypes`

* [Docs] `PropTypes.node`: add link to react docs

Fixes facebook#154.

* [meta] use `in-publish` to avoid running the build on install

* `checkPropTypes`: Friendlier message when using a type checker that is not a function

* [Tests] test the build process

* [New] Add type check for validator for 'shape' and 'exact'

Fixes facebook#220.

* [Tests] fix broken tests

* [Refactor] extract `has`

* [Docs] Add instructions for intentional inclusion of validation in production.

* [New] `oneOfType`: Add expected types to warning

Adds data object to returned error in checker so that the expected types can be accessed from within oneOfType check. Also, updates the tests slightly.

Fixes facebook#9.

* [Tests] Fixed typo: 'Any type *should* accept any value'

* [Dev Deps] update `eslint`

* [Deps] update `react-is`

* [Dev Deps] update `browserify`, `bundle-collapser`, `react`, `uglifyify`, `uglifyjs`

* [Docs] Typo fix in example

Reverts an incorrect typo fix made in facebook#248.

Closes facebook#299

* [Tests] Fix spelling

* doc: highlighted the func name (facebook#321)

* [readme] Clarify usage of `elementType`

Closes facebook#334.

* [Dev Deps] update `bundle-collapser`, `eslint`, `in-publish`, `react`

* [Deps] update `react-is`

* Add a package `sideEffects` field.

* Bump sshpk from 1.13.1 to 1.16.1

Bumps [sshpk](https://github.com/joyent/node-sshpk) from 1.13.1 to 1.16.1.
- [Release notes](https://github.com/joyent/node-sshpk/releases)
- [Commits](TritonDataCenter/node-sshpk@v1.13.1...v1.16.1)

Signed-off-by: dependabot[bot] <[email protected]>

* Use GH Actions

This migrates to a more accessible platform

* [eslint] enable some rules

Additional ESLint rules: "no-multi-spaces": ["error"], "key-spacing": ["error"]
"no-multi-spaces" - Disallow multiple spaces;
"key-spacing" - Enforce consistent spacing between keys and values in object literal properties;

* Bump path-parse from 1.0.6 to 1.0.7

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump tmpl from 1.0.4 to 1.0.5

Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* [deps] regenerate yarn.lock

* [readme] Fix branch name (master -> main)

* [Dev Deps] update `eslint`

* [New] add `PropTypes.bigint`

Closes facebook#355

* v15.8.0

* [Tests] do not fail fast; add react 17

* [meta] Fix formatting in CHANGELOG.md

* [Tests] convert normal `it` functions to arrow functions

* [Tests] add missing test coverage

* [Fix] fix crash when a custom propType return lacks `.data`; call `hasOwnProperty` properly

Fixes facebook#369

* [Dev Deps] update `eslint`

* v15.8.1

* docs: add GH button in support of Ukraine (facebook#375)

## Summary
Our mission at Meta Open Source is to empower communities through open source, and we believe that it means building a welcoming and safe environment for all. As a part of this work, we are adding this banner in support for Ukraine during this crisis.

* [Deps] `yarn upgrade`

* build: harden ci.yml permissions

Signed-off-by: Alex <[email protected]>

* Bump semver from 5.7.1 to 5.7.2

Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](npm/node-semver@v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump ua-parser-js from 0.7.32 to 0.7.33

Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.32 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](faisalman/ua-parser-js@0.7.32...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* remove production env tests as we do not have any production env tests

* update

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Alex <[email protected]>
Co-authored-by: Joe Fraley <[email protected]>
Co-authored-by: Quinn Stearns <[email protected]>
Co-authored-by: Brandon Dail <[email protected]>
Co-authored-by: Brandon Dail <[email protected]>
Co-authored-by: Barry <[email protected]>
Co-authored-by: Christian Paul <[email protected]>
Co-authored-by: Dan Abramov <[email protected]>
Co-authored-by: Julien Mourer <[email protected]>
Co-authored-by: ksmolniy <[email protected]>
Co-authored-by: C. T. Lin <[email protected]>
Co-authored-by: Jim Fitzpatrick <[email protected]>
Co-authored-by: Augustin Trancart <[email protected]>
Co-authored-by: Benoit Tremblay <[email protected]>
Co-authored-by: Dominik Ferber <[email protected]>
Co-authored-by: Joseph A. Szczesniak <[email protected]>
Co-authored-by: Troy Rhinehart <[email protected]>
Co-authored-by: Patrick Way <[email protected]>
Co-authored-by: Jordan Harband <[email protected]>
Co-authored-by: Wojciech Maj <[email protected]>
Co-authored-by: NoScripter <[email protected]>
Co-authored-by: Gregory Desfour <[email protected]>
Co-authored-by: Asbjørn Hegdahl <[email protected]>
Co-authored-by: NoScripter <[email protected]>
Co-authored-by: rgraffbrd <[email protected]>
Co-authored-by: Josh Alling <[email protected]>
Co-authored-by: weiluntong <[email protected]>
Co-authored-by: Conrad Buck <[email protected]>
Co-authored-by: Mark McCann <[email protected]>
Co-authored-by: John Bampton <[email protected]>
Co-authored-by: Haseeb Khan <[email protected]>
Co-authored-by: G Roques <[email protected]>
Co-authored-by: Jayden Seric <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paul O’Shannessy <[email protected]>
Co-authored-by: Konstantin Popov <[email protected]>
Co-authored-by: Dmitry Vinnik <[email protected]>
Co-authored-by: Alex <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
2 participants