1

即使安装成功,我也会安装无效的软件包。顺便说一句,这个问题与答案有关 -关于版本控制的问题

npm install serialport

这些是卡在依赖树中很远的包。

npm ERR! invalid: readable-stream@1.0.27-1 /Users/snorre edwin/Code/raspberry-node-server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream
npm ERR! invalid: string_decoder@0.10.25-1 /Users/snorre edwin/Code/raspberry-node-server/node_modules/serialport/node_modules/node-pre-gyp/node_modules/tar-pack/node_modules/readable-stream/node_modules/string_decoder

这最终导致我的浏览器出现此错误:

Uncaught TypeError: Cannot read property '_ansicursor' of undefined

有没有办法解决这个 npm 问题?我可以避免这些预发布包吗?

4

1 回答 1

0

下面的 github answere 让我对 npm 有了很多了解,我认为我必须在其他地方挖掘这个问题。但实际上,serialport 似乎不再适用于 browserify。它曾经可以工作,因为我使用了 if 两个月,但情况发生了变化。当我大声说出来时,无论如何听起来都很愚蠢。所以不要浏览串口。

我在 github 上收到了一个 answere,issue answere,我想我会与其他可能想知道的人分享:

在 semver@4 中处理预发布版本的变化是主要版本升级到 npm@2 的主要动力之一。npm 2 的所有版本都受到此更改的影响,简而言之,它确保在进行 semver 范围匹配时忽略版本字符串右侧的所有版本信息。当你从 npm@1 升级到 npm@2 时,运行 npm -g ls 时会出现一些异常情况是很正常的,并且由于某些包是通过使用 bundledDependencies 作为独立安装分发的,它们可能会从包的状态与 npm@2 的规则不一致。

虽然这并不总是有效,但大多数时候解决这些问题的最简单方法就是卸载并重新安装受影响的软件包。对于附带 bundledDependencies 的包,如果你真的想清理所有东西,你可以 cd 进入 node_modules 文件夹,该文件夹包含带有嘈杂的预发布依赖版本的包的版本,然后运行 ​​npm install problemDependency,它将使用最新版本与该特定包的 semver 范围匹配的依赖项。

回复:你的第二个问题,semver 范围检查是在语义上完成的,而不是在词汇上,所以 1.0.31 应该与 npm@2 匹配:

% semver -r '~1.0.2' 1.0.26 1.0.27-1 1.0.31 1.0.26 1.0.31 我怀疑您看到的行为是由于包 tarball 中包含 bundledDependency 造成的。

所有这些都已记录在案,因此我将关闭此问题。我希望这可以为您解决问题!

于 2014-12-23T22:39:13.937 回答