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を2ヶ月使っていたので、以前はうまくいきましたが、何かが変わりました。大声で言うと、とにかくばかげているように聞こえます。したがって、シリアルポートをブラウザ化しないでください。

github で answere を受け取りました。issue answere、疑問に思うかもしれない他の人と共有すると思いました:

semver@4 でのプレリリース バージョンの処理の変更は、npm@2 へのメジャー バージョン バンプの主な動機の 1 つです。npm 2 のすべてのバージョンがこの変更の影響を受けます。簡単に言えば、バージョン文字列の - の右側にあるすべてのバージョン情報が、semver 範囲の一致を行うときに無視されるようになります。npm@1 から npm@2 にアップグレードする場合、npm -g ls を実行すると何らかの不規則性が見られるのは普通のことです。一部のパッケージは bundledDependencies を使用して自己完結型のインストールとして配布されているため、 npm@2 のルールと矛盾する状態のパッケージ。

これは常に機能するとは限りませんが、ほとんどの場合、これらの問題を修正する最も簡単な方法は、影響を受けるパッケージをアンインストールして再インストールすることです。bundledDependencies が同梱されているパッケージの場合、本当にすべてをクリーンアップしたい場合は、ノイジーなプレリリース依存バージョンのパッケージのバージョンを含む node_modules フォルダーに移動し、npm install problemDependency を実行するだけで、最新バージョンが使用されます。その特定のパッケージの semver 範囲に一致するその依存関係の。

Re: 2 番目の質問です。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 に答える