“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 内容进行了更正,但 webpackdevDependencies 仍然是 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(在构建过程中)给出错误:无法验证

NEXUS npm install 给出 403 错误

npm install 在这么多警告后给出错误

npm install -g create-react-app 给出错误

“在附近解析时 JSON 输入意外结束”错误:npm install -g@angular/cli

npm install oracledb 给出错误:找不到 $OCI_LIB_DIR/libclntsh.dylib