这很令人沮丧。从昨天早上开始,我就一直在处理这个问题。我有一个反应申请,我已经有一年多没有启动了。上次我启动这个应用程序时运行得很好。但是,我想在本地处理它,并且在一年前运行良好时使用完全相同的package.json,但在浏览器中失败,错误消息如下:
TypeError: Cannot read property 'ReactCurrentOwner' of undefined由于package.json有一年的历史,今天我运行npm更新,当我尝试运行该程序时,会收到以下错误:
Error: Cannot find module 'react-error-overlay/middleware'旧package.json
{
"name": "mazzo-react-test",
"version": "0.1.0",
"private": true,
"dependencies": {
"auth0-lock": "^10.24.3",
"autoprefixer": "7.1.2",
"babel-core": "6.25.0",
"babel-eslint": "7.2.3",
"babel-jest": "20.0.3",
"babel-loader": "7.1.1",
"babel-preset-react-app": "^3.1.2",
"babel-runtime": "6.23.0",
"case-sensitive-paths-webpack-plugin": "2.1.1",
"chalk": "^1.1.3",
"css-loader": "0.28.4",
"dotenv": "4.0.0",
"eslint": "4.4.1",
"eslint-config-react-app": "^2.1.0",
"eslint-loader": "1.9.0",
"eslint-plugin-flowtype": "2.35.0",
"eslint-plugin-import": "2.7.0",
"eslint-plugin-jsx-a11y": "5.1.1",
"eslint-plugin-react": "7.1.0",
"extract-text-webpack-plugin": "3.0.0",
"file-loader": "0.11.2",
"fs-extra": "3.0.1",
"html-webpack-plugin": "2.29.0",
"jest": "20.0.4",
"konva": "^1.7.6",
"material-ui": "^0.18.7",
"object-assign": "4.1.1",
"postcss-flexbugs-fixes": "3.2.0",
"postcss-loader": "2.0.6",
"promise": "8.0.1",
"react": "^15.6.2",
"react-dev-utils": "^3.1.3",
"react-dom": "^15.6.2",
"react-error-overlay": "^1.0.10",
"react-konva": "^1.7.16",
"react-relay": "0.10.0",
"react-relay-network-layer": "1.3.9",
"react-router": "3.0.2",
"react-router-relay": "0.13.5",
"react-tap-event-plugin": "^2.0.1",
"relay-commit-mutation-promise": "^1.0.1",
"style-loader": "0.18.2",
"styled-components": "^2.4.1",
"sw-precache-webpack-plugin": "0.11.4",
"url-loader": "0.5.9",
"webpack": "3.5.1",
"webpack-dev-server": "2.7.1",
"webpack-manifest-plugin": "1.2.1",
"whatwg-fetch": "2.0.3"
},
"scripts": {
"start": "node scripts/start.js",
"build": "GRAPHQL_ENDPOINT=https://api.graph.cool/relay/v1/cj63i9kajpzhw0153segab1wa node scripts/build.js",
"test": "node scripts/test.js --env=jsdom"
},
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx}"
],
"setupFiles": [
"<rootDir>/config/polyfills.js"
],
"testMatch": [
"<rootDir>/src/**/__tests__/**/*.js?(x)",
"<rootDir>/src/**/?(*.)(spec|test).js?(x)"
],
"testEnvironment": "node",
"testURL": "http://localhost",
"transform": {
"^.+\\.(js|jsx)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"
],
"moduleNameMapper": {
"^react-native$": "react-native-web"
},
"moduleFileExtensions": [
"web.js",
"js",
"json",
"web.jsx",
"jsx",
"node"
]
},
"babel": {
"plugins": [
"react-relay"
],
"presets": [
"react-app"
]
},
"eslintConfig": {
"extends": "react-app"
},
"devDependencies": {
"babel-plugin-react-relay": "^0.10.0"
}
}新的或更新的package.json
{
"name": "mazzo-react-test",
"version": "0.1.0",
"private": true,
"dependencies": {
"auth0-lock": "^11.14.0",
"autoprefixer": "9.4.7",
"babel-core": "6.26.3",
"babel-eslint": "10.0.1",
"babel-jest": "24.1.0",
"babel-loader": "8.0.5",
"babel-preset-react-app": "^7.0.1",
"babel-runtime": "6.26.0",
"case-sensitive-paths-webpack-plugin": "2.2.0",
"chalk": "^2.4.2",
"css-loader": "2.1.0",
"dotenv": "6.2.0",
"eslint": "5.14.0",
"eslint-config-react-app": "^3.0.7",
"eslint-loader": "2.1.2",
"eslint-plugin-flowtype": "3.4.2",
"eslint-plugin-import": "2.16.0",
"eslint-plugin-jsx-a11y": "6.2.1",
"eslint-plugin-react": "7.12.4",
"extract-text-webpack-plugin": "3.0.2",
"file-loader": "3.0.1",
"fs-extra": "7.0.1",
"html-webpack-plugin": "3.2.0",
"jest": "24.1.0",
"konva": "^2.6.0",
"material-ui": "^0.20.2",
"object-assign": "4.1.1",
"postcss-flexbugs-fixes": "4.1.0",
"postcss-loader": "3.0.0",
"promise": "8.0.2",
"react": "^16.8.2",
"react-dev-utils": "^7.0.3",
"react-dom": "^16.8.2",
"react-error-overlay": "^5.1.3",
"react-konva": "^16.8.2-0",
"react-relay": "2.0.0",
"react-relay-network-layer": "2.2.1",
"react-router": "4.3.1",
"react-router-relay": "0.14.0",
"react-tap-event-plugin": "^3.0.3",
"relay-commit-mutation-promise": "^1.0.0",
"style-loader": "0.23.1",
"styled-components": "^4.1.3",
"sw-precache-webpack-plugin": "0.11.5",
"url-loader": "1.1.2",
"webpack": "4.29.5",
"webpack-dev-server": "3.1.14",
"webpack-manifest-plugin": "2.0.4",
"whatwg-fetch": "3.0.0"
},
"scripts": {
"start": "node scripts/start.js",
"build": "GRAPHQL_ENDPOINT=https://api.graph.cool/relay/v1/cj63i9kajpzhw0153segab1wa node scripts/build.js",
"test": "node scripts/test.js --env=jsdom"
},
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx}"
],
"setupFiles": [
"<rootDir>/config/polyfills.js"
],
"testMatch": [
"<rootDir>/src/**/__tests__/**/*.js?(x)",
"<rootDir>/src/**/?(*.)(spec|test).js?(x)"
],
"testEnvironment": "node",
"testURL": "http://localhost",
"transform": {
"^.+\\.(js|jsx)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$"
],
"moduleNameMapper": {
"^react-native$": "react-native-web"
},
"moduleFileExtensions": [
"web.js",
"js",
"json",
"web.jsx",
"jsx",
"node"
]
},
"babel": {
"plugins": [
"react-relay"
],
"presets": [
"react-app"
]
},
"eslintConfig": {
"extends": "react-app"
},
"devDependencies": {
"babel-plugin-react-relay": "^0.10.0"
}
}为什么?
发布于 2019-02-18 17:33:41
因此,您所遇到的是npm模块的工作方式--这个问题并不是react独有的。我们不能指望你解决这个问题--但我可以为你指明正确的方向。
我将使用package.json中的依赖项作为示例,行:
"react-error-overlay": "^1.0.10"在版本号旁边有一个插入符号(^)。
这意味着在大多数情况下,当您运行npm install或npm update时,npm将获取该包的最新的版本,高于该版本号。
如果您在文章中比较这两个不同的package.json文件,您会注意到对于相当多的依赖项,有多个主要的包版本被跳过。如果您查找语义版本控制,您会发现一个主要的版本凸起通常是由于模块中的中断更改所致。
例如:
老:"react-error-overlay": "^1.0.10"
新:"react-error-overlay": "^5.1.3"
在这里,您将从主要版本1.x.x跳到5.x.x。这是超过4个打破的变化,只是这个模块。
基本上,这意味着模块的工作方式与以前不同。如果您的项目在大约一年前就开始工作了--并且运行了npm update --那么现在它很可能会失败,因为您正在引入新的主要包版本。
如果您只希望您的项目像以前一样工作,下面是我的建议:
取package.json的原始版本,并删除版本号中的^插入符号。
然后清除项目中的node_modules文件夹。
然后运行npm install。
这应该会使模块版本与您之前的工作非常相似。那就试试看它是否运行。如果是这样的话,从那里单独更新您的依赖项--并找出哪些主要版本的颠簸会导致项目崩溃。
还:
至于您正在获得的typeError,它源于react-konva,正如在这个发布线程中所指出的:
https://github.com/konvajs/react-konva/issues/147#issuecomment-346217504
react-konva以上版本1.1.6适用于react v16及以上版本
通过使用以下版本来实现目标react v15:
"react-konva": "1.1.6"
https://stackoverflow.com/questions/54751509
复制相似问题