0

我有一个带有以下 npm 依赖项的 grunt 项目:

  • grunt-contrib-qunit
  • grunt-contrib-compass
  • grunt-contrib-jshint

我在 VirtualBox VM(来自 Ubuntu 主机)中创建了一个 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 ...错误

为了让这个任务正常工作,必须通过 NPM 在本地安装 PhantomJS。如果您看到此消息,通常表示 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 install从项目的根目录运行以安装 npm 依赖项。

[编辑] - 在做了更多的研究,并在基本的 Ubuntu 12.04 安装上复制了这个问题之后,我终于弄清楚了这个问题。

依赖链如下:

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

现在这个phantomjs包简单地安装了一个本地版本phantomjs,并提供了一个围绕 bin 应用程序的 JS api 包装器。问题是phantomjs具有某些操作系统级别的依赖性,如下载页面中所述:

“...。但是,预计系统中提供了渲染所需的一些基本库(FreeType、Fontconfig)和基本字体文件。”

这就是本地 phantomjs 安装失败的原因。实际上,由于安装成功完成,该错误非常普遍,但 phantomjs 无法运行。

phantomjsNPM 模块不处理phantomjs依赖项(因为phantomjs它不是正确的 NPM 模块)。

要修复 Ubuntu 12.04 中的问题,您需要phantomjs通过使用以下命令安装字体包来手动安装依赖项:

sudo apt-get install fontconfig

我在 'phantomjs' NPM 项目上创建了一张票,以便在 README 中添加有关这些依赖项的注释:https ://github.com/Obvious/phantomjs/issues/80

于 2013-07-29T14:59:53.873 回答
0

我刚刚解决了。

sudo apt-get install phantomjs

运行后它可以工作。

我在阅读此内容后发现:https ://github.com/gruntjs/grunt-lib-phantomjs/issues/22

于 2013-07-29T18:14:47.430 回答