是否可以忽略丢失的NPM(对等)依赖性?

时间:2020-04-11 00:21:50

标签: reactjs npm

尝试玩reactjs,而我对npm的了解非常有限。

我跑了

npx create-react-app my-app

Installing template dependencies using npm...
npm WARN react-scripts@3.4.1 requires a peer of typescript@^3.2.1 but none is installed. 
You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of node-sass@^4.0.0 but none is installed. 
You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of sass@^1.3.0 but none is installed. 
You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of fibers@>= 3.1.0 but none is installed. 
You must install peer dependencies yourself.
npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. 
You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules\webpack-dev-server\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules\watchpack\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules\jest-haste-map\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

> added 1606 packages from 750 contributors and audited 931160 packages
> in 165.13s

reactjs是一个非常流行的框架。
全新安装中缺少开箱即用的dependencies是否正常?

我看到某个地方可以手动添加npm install --save-dev xxxxx缺少的内容。

这是我运行以下命令时返回的内容:

npm ls

    npm ERR! peer dep missing: typescript@^3.2.1, required by react-scripts@3.4.1
    npm ERR! peer dep missing: node-sass@^4.0.0, required by sass-loader@8.0.2
    npm ERR! peer dep missing: sass@^1.3.0, required by sass-loader@8.0.2
    npm ERR! peer dep missing: fibers@>= 3.1.0, required by sass-loader@8.0.2
    npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev |
    | >= 3.7.0-beta, required by tsutils@3.17.1
    npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev |
    | >= 3.7.0-beta, required by tsutils@3.17.1
    npm ERR! missing: mkdirp@0.5.3, required by node-pre-gyp@0.14.0
    npm ERR! missing: minimist@1.2.5, required by mkdirp@0.5.3
    npm ERR! missing: npm-normalize-package-bin@1.0.1, required by npm-packlist@1.4.8
    npm ERR! missing: npm-normalize-package-bin@1.0.1, required by npm-bundled@1.1.1
    npm ERR! missing: safe-buffer@5.1.2, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by string_decoder@1.1.1
    npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
    npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
    npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
    npm ERR! missing: minimist@1.2.5, required by rc@1.2.8
    npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
    npm ERR! missing: minipass@2.9.0, required by tar@4.4.13
    npm ERR! missing: mkdirp@0.5.3, required by tar@4.4.13
    npm ERR! missing: safe-buffer@5.1.2, required by tar@4.4.13
    npm ERR! missing: yallist@3.1.1, required by tar@4.4.13
    npm ERR! missing: minipass@2.9.0, required by fs-minipass@1.2.7
    npm ERR! missing: safe-buffer@5.1.2, required by minipass@2.9.0
    npm ERR! missing: yallist@3.1.1, required by minipass@2.9.0
    npm ERR! missing: minipass@2.9.0, required by minizlib@1.3.3
    npm ERR! missing: mkdirp@0.5.3, required by node-pre-gyp@0.14.0
    npm ERR! missing: minimist@1.2.5, required by mkdirp@0.5.3
    npm ERR! missing: console-control-strings@1.1.0, required by npmlog@4.1.2
    npm ERR! missing: inherits@2.0.4, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by string_decoder@1.1.1
    npm ERR! missing: console-control-strings@1.1.0, required by gauge@2.7.4
    npm ERR! missing: string-width@1.0.2, required by gauge@2.7.4
    npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
    npm ERR! missing: code-point-at@1.1.0, required by string-width@1.0.2
    npm ERR! missing: is-fullwidth-code-point@1.0.0, required by string-width@1.0.2
    npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
    npm ERR! missing: number-is-nan@1.0.1, required by is-fullwidth-code-point@1.0.0
    npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
    npm ERR! missing: string-width@1.0.2, required by wide-align@1.1.3
    npm ERR! missing: minimist@1.2.5, required by rc@1.2.8
    npm ERR! missing: inherits@2.0.4, required by glob@7.1.6
    npm ERR! missing: once@1.4.0, required by glob@7.1.6
    npm ERR! missing: once@1.4.0, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
    npm ERR! missing: minipass@2.9.0, required by tar@4.4.13
    npm ERR! missing: mkdirp@0.5.3, required by tar@4.4.13
    npm ERR! missing: safe-buffer@5.1.2, required by tar@4.4.13
    npm ERR! missing: yallist@3.1.1, required by tar@4.4.13
    npm ERR! missing: minipass@2.9.0, required by fs-minipass@1.2.7
    npm ERR! missing: safe-buffer@5.1.2, required by minipass@2.9.0
    npm ERR! missing: yallist@3.1.1, required by minipass@2.9.0
    npm ERR! missing: minipass@2.9.0, required by minizlib@1.3.3
    npm ERR! missing: safe-buffer@5.1.2, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by string_decoder@1.1.1
    npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
    npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
    npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
    npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
    npm ERR! missing: safe-buffer@5.1.2, required by tar@4.4.13
    npm ERR! missing: yallist@3.1.1, required by tar@4.4.13
    npm ERR! missing: safe-buffer@5.1.2, required by minipass@2.9.0
    npm ERR! missing: yallist@3.1.1, required by minipass@2.9.0

那么,我是否错过了反应设置/安装末尾显示的大约5个或大约30-50个,npm ls表示呢?

如果我npm start这个项目,它似乎运行得很好。
我什至需要所有这些丢失的dependencies吗?
您如何在世界范围内跟踪需要的东西-而不是?
以及您怎么知道何时因缺少某些东西而遇到问题?

我尝试安装一些dependencies
,但是它们仅依赖于缺少的更多dependencies
这似乎是一个永无止境的追尾游戏。

我怎么能相信一切都井井有条?
如果我只是说要拧紧它并继续尝试安装50个以上的模块(及其所有依赖项),它会起作用吗?我感到非常不知所措,甚至还没有编写任何代码。

谢谢!

编辑/更新:

v10.15.3-> v12.16.2 升级(几年前已经安装了旧版本以与react native一起玩)。删除了我之前的项目文件夹,并重新创建了react项目。除了:

,所有缺少的依赖项都消失了
npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta |
| >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself.

运行“ npm ls”也仅将打字稿显示为唯一缺少的内容。因此,很高兴看到与React安装过程报告的内容相符。

这使我面临以下问题。

1)Node / NPM是否安装了“默认”软件包?当我自己未安装任何其他工具时,我看不到拥有较旧版本的Node会如何突然使以前缺少的所有模块可用?尤其是当它们都是第三方时,这就是npm的全部要点(能够管理第三方包/模块)。我该如何防止这种情况再次发生(新版本发布时我是否总是必须立即更新节点?)

2)我试图同时安装打字稿:

npm install -g typescript --save-dev
npm install typescript --save-dev

但都没有警告要离开

我必须做:

npm install typescript

最终得到警告,这些警告消失了。但这直接在package.json中将打字稿添加到我的代理中。这是否意味着打字稿库将包含在我的最终项目中,该项目将导出并上传到我的网站?显然我不希望有多余的文件在里面(仅打字稿就是50MB)。

谢谢!

1 个答案:

答案 0 :(得分:3)

Reactjs 是一个非常流行的框架。

全新安装中缺少开箱即用的dependencies是正常的吗?

是的,这是绝对正常的。
这甚至不应该阻止您学习react的进度。
实际上,这种依赖情况更像是npm的问题,因为{ {3}}。

我可以手动添加npm install --save-dev xxxxx中缺少的内容。

是的,但这将是一场持续的战斗。
有很多软件包完全是为install peer dependencies开发的,如果必须安装这些peer dependencies,最好考虑使用这些软件包。

如果我运行了npm start,则项目运行正常。
我什至需要所有这些丢失的dependencies吗?
您如何在世界范围内跟踪需要的东西-而不是?
以及您怎么知道何时因缺少某些东西而遇到问题?

不,您并不完全需要它们,这就是项目正常运行的原因。

事实上,让我为您介绍reactjs场景。
为了让您摆脱 npm依赖痛苦,这就是React团队创新的
create-react-app的原因,这使得开始react开发非常容易和快速。

因此,当您运行npx create-react-app my-app启动react项目时,
在后台依赖于一个名为 react-scripts 的主要程序包。 br />实际上,请注意,当您运行npm start时,它会调用react-scripts start

peer dependencies的{​​{1}}要求其中许多dependencies
如果您检查react-scripts

,就会看到此信息

我尝试安装一些依赖项,
但它们只是依赖于缺少的更多依赖项。
追尾似乎是永无止境的游戏。
我怎么能相信一切都井然有序?
如果我只是说说螺丝钉,然后继续尝试安装50多个模块(及其所有依赖项),它是否会起作用?

不要去那里!这就是react建议./node_modules/react-scripts/package.json的原因,
它将安装必备组件。
一旦您的项目认为某个软件包是必备组件,create-react-app将失败。
此时,您可以运行npm startnpm i --save @package

注意:
npm --save-dev @package替换为项目所需的软件包。
请注意,“ i”是“安装”的简称