0

次の npm 依存関係を持つうなり声のあるプロジェクトがあります。

  • grunt-contrib-qunit
  • うなり声-contrib-コンパス
  • うなり声-contrib-jshint

(Ubuntu ホストから) VirtualBox VM に Ubuntu 12.04 64 ビット サーバーを作成し、次のコマンドを実行しました。

sudo apt-get update
sudo apt-get install -y ruby rubygems gcc python make
sudo gem install compass

wget http://nodejs.org/dist/v0.10.15/node-v0.10.15.tar.gz
tar -xzf node-v0.10.15.tar.gz
cd node-v0.10.15/
./configure 
make
sudo make install
cd ../
rm -Rf node-v0.10.1
rm node-v0.10.15.tar.gz 

sudo npm install -g grunt-cli

おそらくそれはnpmをインストールしました。次に、git clone を使用して、CentOS で使用していた grunt プロジェクトのクローンを作成しました (すべて CentOS で動作します)。残念ながら、grunt を実行すると、次のエラーで qunit を実行しようとすると失敗しました。

"qunit:dist" (qunit) タスクの実行 テスト中 /home/testuser/myproject/test/index.html OK

PhantomJS を実行しています...エラー

このタスクが正しく機能するためには、PhantomJS を NPM 経由でローカルにインストールする必要があります。このメッセージが表示される場合は、通常、NPM のインストールが失敗したことを意味します。https://github.com/gruntjs/grunt-lib-phantomjs/issues警告: PhantomJS が見つかりません。 --force を使用して続行します。

警告のため中止されました。

grunt フォルダーから npm update を実行しても、まだこのエラーが発生します。

私は何が欠けていますか?

編集 次の事実に注意してください。

  1. このプロジェクトは CentOS でエラーなく動作します。
  2. このプロジェクトには、 --save-dev を使用してすべてのプラグインがローカルにインストールされています
  3. 各依存関係を手動でインストールしてローカル インストールを上書きしても、この問題は解決されません。
  4. 各依存関係を手動でアンインストールして再インストールしても、これは修正されません。
4

2 に答える 2

5

npm installnpm 依存関係をインストールするには、プロジェクトのルートから実行する必要があります。

[編集] - さらに調査を行った後、基本的な Ubuntu 12.04 インストールでこの問題を再現した後、最終的にこの問題を理解しました。

依存チェーンは次のとおりです。

grunt-contrib-qunit>> grunt-lib-phantomjs>>phantomjs

現在、phantomjsパッケージは のローカル バージョンをインストールするだけでphantomjs、bin アプリケーションの周りに JS API ラッパーを提供します。問題は、ダウンロード ページphantomjsに記載されているように、特定の OS レベルの依存関係があることです。

「....ただし、レンダリングに必要ないくつかの基本ライブラリ (FreeType、Fontconfig) と基本的なフォント ファイルがシステムで利用可能であることが期待されます。」

これが、ローカルの phantomjs のインストールが失敗した理由です。実際には、インストールは正常に完了しますが、phantomjs を実行できないため、エラーは非常に一般的です。

phantomjsNPM モジュールはphantomjs依存関係を処理しません (適切phantomjsな NPM モジュールではないため)。

Ubuntu 12.04 でこの問題を解決するにはphantomjs、次のコマンドでフォント パッケージをインストールして、依存関係を手動でインストールする必要があります。

sudo apt-get install fontconfig

これらの依存関係に関するメモを README に追加するために、「phantomjs」NPM プロジェクトでチケットを作成しました: https://github.com/Obvious/phantomjs/issues/80

于 2013-07-29T14:59:53.873 に答える