J'obtiens l'erreur "React.createContext is not a function" lors de l'exécution d'une application native react. J'ai recherché "createContent" dans le code, il n'existe pas.
Toute idée de la raison de l'erreur.
Il s'agit d'une version iOS d'une application qui s'exécute déjà sur android.
Voici mon fichier package.json:
{ "name": "newapp", "version": "0.0.2", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start", "test": "jest --verbose --coverage", "test:update": "jest --verbose --coverage --updateSnapshot", "test:watch": "jest --verbose --watch", "coverage": "jest --verbose --coverage && xdg-open ./coverage/lcov-report/index.html", "lint": "npx eslint --fix ./src/*" }, "dependencies": { "apollo-boost": "0.1.17", "axios": "^0.18.0", "babel": "^6.23.0", "buffer": "5.1.0", "cross-fetch": "^3.0.0", "enzyme": "^3.3.0", "graphql": "0.13.2", "graphql-tag": "2.10.0", "jasmine-react-helpers": "^0.2.2", "lodash": "4.17.5", "moment": "2.21.0", "query-string": "^6.1.0", "react": "16.2.0", "react-addons-test-utils": "^15.6.2", "react-apollo": "2.2.4", "react-dom": "^16.4.0", "react-native": "0.51.0", "react-native-elements": "0.19.0", "react-native-fabric": "^0.5.1", "react-native-htmlview": "^0.12.1", "react-native-link-preview": "^1.3.5", "react-native-login": "^0.0.1-alpha.2", "react-native-login-keycloak": "^1.0.2", "react-native-onesignal": "3.2.6", "react-native-push-notification": "https://github.com/Dhanraj-bidchat/react-native-push-notification.git", "react-native-sleek-loading-indicator": "^0.1.3", "react-native-spinkit": "^1.1.1", "react-native-svg": "6.2.2", "react-native-swipe-cards": "^0.1.1", "react-native-swiper": "1.5.13", "react-native-vector-icons": "4.5.0", "react-navigation": "1.5.6", "react-redux": "5.0.7", "redux": "^3.7.2", "redux-logger": "^3.0.6", "redux-persist": "5.9.1", "redux-thunk": "^2.2.0", "victory-native": "0.17.2", "whatwg-fetch": "2.0.4" }, "devDependencies": { "babel-eslint": "^8.2.3", "babel-jest": "^22.4.4", "babel-plugin-dynamic-import-node": "^1.2.0", "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-transform-class-properties": "^6.24.1", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", "babel-preset-env": "^1.7.0", "babel-preset-react-native": "4.0.0", "enzyme-adapter-react-16": "^1.1.1", "enzyme-to-json": "^3.3.4", "eslint": "^4.19.1", "eslint-config-standard": "^11.0.0", "eslint-plugin-import": "^2.12.0", "eslint-plugin-jest": "^21.17.0", "eslint-plugin-node": "^6.0.1", "eslint-plugin-only-warn": "^1.0.1", "eslint-plugin-promise": "^3.8.0", "eslint-plugin-react": "^7.9.1", "eslint-plugin-standard": "^3.1.0", "jest": "^23.5.0", "jest-resolve": "^23.0.0", "jest-serializer-enzyme": "^1.0.0", "react-native-mock-render": "^0.0.26", "react-test-renderer": "^16.3.2", "redux-mock-store": "^1.5.1", "sinon": "^5.0.10" }, "jest": { "preset": "react-native", "setupFiles": [ "./jest-setup.js" ], "snapshotSerializers": [ "enzyme-to-json/serializer" ], "modulePaths": [ "<rootDir>/src", "<rootDir>/node_modules" ], "transform": { "^.+\\.js$": "babel-jest", "^.+\\.jsx?$": "babel-jest" }, "transformIgnorePatterns": [ "node_modules/(?!(react-native-safe-area-view|react-navigation|react-native-htmlview|react-native-fabric|react-native-login|react-native-elements|react-native-vector-icons|react-native-spinkit|victory-pie|victory-chart|victory-core|react-native-svg|react-native|redux-persist|victory-native|react-native-swipe-cards|react-native-swiper)/)" ], "moduleNameMapper": { "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/assetsTransformer.js", "\\.(css|less)$": "<rootDir>/assetsTransformer.js" } } }
4 Réponses :
Essayez de mettre à jour React to React vers 16.4.1
La mise à niveau peut être douloureuse. J'attendrai d'autres réponses. Je vous remercie!
Vouliez-vous mettre un commentaire et l'avez publié comme réponse?
Non, je me souviens avoir eu ce problème. La mise à niveau vers 16.4.1 l'a résolu pour moi.
Dans votre package, react
et react-dom
n'ont pas la même version, c'est pourquoi vous obtenez l'erreur. react-dom@16.4.0
voudra avoir accès à React.createContext
mais react@16.2.0 ne l'aura pas.
Pour le faire fonctionner exécutez la commande suivante:
npm install react@16.4.0
Ou si vous utilisez NPM:
yarn upgrade react@16.4.0
J'ai essayé le correctif ci-dessus sur mon react native 0.53 qui avait réagi 16.2 avec la même erreur et je viens de recevoir une autre erreur à propos de styled-components.native.cjs.js '
J'ai la même version de react et react-dom ne résout pas le problème et le problème TypeError: _react.default.createContext n'est pas une fonction persiste.
En utilisant npm , je l'ai résolu en passant à 16.4.1:
npm i react@16.4.1
Merci beaucoup. A travaillé pour moi.
Si npm i react @ latest react-dom @ latest
ne fonctionne pas, essayez de faire npm update
, cela mettra à jour tous les packages.