“npm install”给出错误消息“无效”,它是啥?
Posted
技术标签:
【中文标题】“npm install”给出错误消息“无效”,它是啥?【英文标题】:"npm install" gives error message "invalid", what is it?“npm install”给出错误消息“无效”,它是什么? 【发布时间】:2017-09-01 04:01:30 【问题描述】:请检查图片。
我猜它与package.json
有关,但不太确定。
回复评论以获取更多信息
最初我安装的是material-ui
。
详细信息在这里:
I:\react-boilerplate>npm install material-ui
react-boilerplate@3.4.0 I:\react-boilerplate
+--material-ui@0.17.1
| +-- keycode@2.1.8
| +-- lodash.throttle@4.1.1
| +-- 未满足的同行依赖 react@^15.4.2
| +-- react-addons-create-fragment@15.4.2
| +-- react-addons-transition-group@15.4.2
| +-- react-event-listener@0.4.3
| | +-- 未满足的同行依赖 react@^15.4.2
| | `-- react-addons-shallow-compare@15.4.2
| +-- 重组@0.22.0
| | `--change-emitter@0.1.3
| `-- simple-assign@0.1.0
+-- UNMET PEER DEPENDENCY react-tap-event-plugin@^2.0.1
`-- 未满足对等依赖 webpack@2.2.0-rc.3
然后我试图通过npm install
他们来修复 UNMET PEER DEPENDENCY。
第一次尝试是这样的:
react-boilerplate@3.4.0 I:\react-boilerplate
+-- react@15.4.2 无效
+-- react-tap-event-plugin@2.0.1
`-- 未满足对等依赖 webpack@2.2.0-rc.3
`-- webpack-sources@0.1.5
如您所见,这是我遇到的第一个invalid
。
所以我只是想弄清楚为什么会弹出这个invalid
以及如何解决它。
回复评论以获取更多信息
这里是 package.json,依赖部分
“依赖”: “babel-polyfill”:“6.20.0”, “粉笔”:“1.1.3”, “压缩”:“1.6.2”, “跨环境”:“3.1.3”, “快递”:“4.14.0”, "fontfaceobserver": "2.0.7", “不可变”:“3.8.1”, “国际”:“1.2.5”, “不变”:“2.2.2”, “ip”:“1.1.4”, “lodash”:“4.17.2”, “极简主义”:“1.2.0”, “反应”:“15.4.1”, “反应域”:“15.4.1”, “反应头盔”:“3.2.2”, “反应国际”:“2.1.5”, "react-redux": "4.4.6", “反应路由器”:“3.0.0”, "react-router-redux": "4.0.6", “反应路由器滚动”:“0.4.1”, “redux”:“3.6.0”, “redux-immutable”:“3.0.8”, “redux-saga”:“0.14.0”, “重新选择”:“2.5.4”, “sanitize.css”:“4.1.0”, “样式组件”:“1.1.2”, “警告”:“3.0.0”, "whatwg-fetch": "2.0.1" ,
和 devDependencies 部分
“开发依赖”: "babel-cli": "6.18.0", "babel-core": "6.21.0", "babel-eslint": "7.1.1", "babel-loader": "6.2.10", "babel-plugin-dynamic-import-node": "1.0.0", “babel-plugin-react-intl”:“2.2.0”, "babel-plugin-react-transform": "2.0.2", "babel-plugin-transform-es2015-modules-commonjs": "6.18.0", “babel-plugin-transform-react-constant-elements”:“6.9.1”, “babel-plugin-transform-react-inline-elements”:“6.8.0”, “babel-plugin-transform-react-remove-prop-types”:“0.2.11”, "babel-preset-latest": "6.16.0", "babel-preset-react": "6.16.0", “babel-preset-react-hmre”:“1.1.1”, "babel-preset-stage-0": "6.16.0", “cheerio”:“0.22.0”, “循环依赖插件”:“2.0.0”, “工作服”:“2.11.15”, "css-loader": "0.26.1", “酶”:“2.6.0”, “eslint”:“3.11.1”, “eslint-config-airbnb”:“13.0.0”, “eslint-config-airbnb-base”:“10.0.1”, “eslint-import-resolver-webpack”:“0.8.0”, "eslint-plugin-import": "2.2.0", “eslint-plugin-jsx-a11y”:“2.2.3”, “eslint-plugin-react”:“6.7.1”, “eslint-plugin-redux-saga”:“0.1.5”, “事件源-polyfill”:“0.9.6”, “出口装载机”:“0.6.3”, “文件加载器”:“0.9.0”, "html-loader": "0.4.4", "html-webpack-plugin": "2.24.1", "image-webpack-loader": "2.0.0", “进口装载机”:“0.6.5”, "jest-cli": "18.0.0", "lint-staged": "3.2.1", “ngrok”:“2.2.4”, “节点扑通”:“0.5.4”, “空加载器”:“0.1.1”, “离线插件”:“4.5.2”, “扑通”:“1.7.3”, “预提交”:“1.1.3”, “反应插件测试工具”:“15.4.1”, “rimraf”:“2.5.4”, “shelljs”:“0.7.5”, "sinon": "2.0.0-pre", “样式加载器”:“0.13.1”, "url-loader": "0.5.7", "webpack": "2.2.0-rc.3", "webpack-dev-middleware": "1.9.0", "webpack-hot-middleware": "2.15.0"
【问题讨论】:
您能提供更多信息吗?上面和下面的输出还打印了什么? @E_net4 嘿,我添加了更多信息! 请同时包含您项目的 package.json,或至少包含已注册的依赖项。 @E_net4 好的,我已经添加了依赖项部分! 【参考方案1】:此处的无效依赖项表明安装了不适当版本的依赖项包。在这种情况下,您的项目正在请求 webpack@2.2.0-rc3
,但安装了版本 2.2.1
。请注意,版本范围内没有插入符号 (^) 或波浪号 (~),这意味着 2.2.1
不是有效匹配项。
另一个冲突发生在 React 上,它被固定在版本 15.4.1
并且应该升级到版本范围 ^15.4.2
,根据其他依赖项的要求(例如 material-ui
)。
为了设置新版本的依赖项(升级/降级),不要忘记相应的保存标志(--save
/-S
或 --save-dev
/-D
)。
npm install -S react@^15.4.2
不幸的是,react-tap-event-plugin
依赖于版本 2.2.0-rc3
webpack,所以你不应该升级 webpack。相反,您可以调用npm update --dev
以确保所有注册的依赖项都安装了正确的版本。如果一切都失败了,一个简单但有效的技巧是删除 node_modules 文件夹并从头开始安装所有包。
【讨论】:
好的,听起来不错。只想确认所有细节:invalid
消息提示版本冲突,但是冲突的依赖项仍然安装成功,是吗?就像,devDepdencies
想要2.2.0-rc3
,我安装了2.2.1
,所以它告诉我invalid
,但它仍然允许我这样做,对吧?
哦,你是怎么发现react-tap-event-plugin
依赖2.2.0-rc3
的?
糟糕,我认为我在帖子中提供了错误的 package.json 内容,我已经用正确的 github 内容进行了更正,但 webpack
的 devDependencies
仍然是 2.2.0-rc3
,所以我认为你的答案仍然有效。
1.如果您想知道的话,npm 不会禁止您安装无效版本的软件包。一旦你有了一个包,最好的办法是使用npm update
并精心升级依赖项。 This 我的其他答案提供了一些提示。 2. react-tap-event-plugin
似乎依赖于 webpack@2.2.0-rc3,因为它就在您的日志中。 ;) 3. 我会相应地更新我的答案。【参考方案2】:
我看到在执行npm install Path\Filename.tgz
时发生此错误,其中后续npm install
调用的文件名与原始安装不同。
具体来说,在路径\文件名大小写无关紧要的 Windows 操作系统上。
例如,我使用具有大写开头字符的文件夹名称进行安装,然后在随后的调用中,我使用的是小写名称。这会导致软件包无法安装并在软件包名称旁边生成红色 invalid
警告。
检查package.json
并使用准确 路径和文件名,看看是否可以为您解决问题。
【讨论】:
以上是关于“npm install”给出错误消息“无效”,它是啥?的主要内容,如果未能解决你的问题,请参考以下文章
npm install from tfs feed(在构建过程中)给出错误:无法验证
npm install -g create-react-app 给出错误