您没有安装 'phantomjs'
You don't have 'phantomjs' installed
我确实安装了 PhantomJS,但是当我 运行 我的 Node.js 代码时出现错误(你没有安装 'phantomjs'):
var modules = '/home/engine/node_modules/';
var path = require('path');
var childProcess = require('child_process');
var phantom = require(modules+'phantom');
var binPath = phantom.path;
phantom.create(function(browser){ // Error happens here I think because the module is found
// browser.createPage(function (page){});
});
如果在 console.log binPath 中,我得到未定义。
但是在 PuTTY 中,如果我:
cd ~/phantomjs/
[root@engine phantomjs]# bin/phantomjs
phantomjs>
我是不是安装错地方了?
您需要加载全局 PhantomJS 模块而不是本地模块。
加载本地模块会阻止您的应用程序找到可运行的 bin:
var phantom = require('phantom');
此外,添加 utnas 评论:
Remove var modules = '/home/engine/node_modules/';. It's not useful. Node.js knows where to find modules.
将答案的两部分混合到一个逻辑规则中,Node.js 将始终首先从全局安装的模块中加载模块(如果存在)。您强制它加载本地的,这会阻止它找到垃圾箱。
但是如果你在 Windows,你可以尝试这样的事情:
var phantom = require('phantom');
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open("http://www.google.com", function (status) {
console.log("opened google? ", status);
page.evaluate(function () { return document.title; }, function (result) {
console.log('Page title is ' + result);
ph.exit();
});
});
});
}, {
dnodeOpts: {
weak: false
}
});
在这种情况下接受的答案并不是真正的解决方案。错误消息 You don't have 'phantomjs' installed
是来自 phantomjs-node 模块的内部错误。我自己 运行 遇到了这个错误,我设法像这样修复它:
var phantom = require('phantom');
var options = {
path: '/usr/local/bin/'
};
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open("http://www.google.com", function (status) {
console.log("opened google? ", status);
page.evaluate(function () { return document.title; }, function (result) {
console.log('Page title is ' + result);
ph.exit();
});
});
});
}, options);
注意 options
被传递给 phantom.create()
方法。 path
选项应该是包含 phantomjs 二进制文件的目录的完整路径。
我在我的 macOS 上也遇到了这个错误,所以这个命令可以解决问题。
brew install phantomjs
编辑:
phantomjs 被转移到 Cask。所以在 2019 年 运行:
brew cask install phantomjs
我确实安装了 PhantomJS,但是当我 运行 我的 Node.js 代码时出现错误(你没有安装 'phantomjs'):
var modules = '/home/engine/node_modules/';
var path = require('path');
var childProcess = require('child_process');
var phantom = require(modules+'phantom');
var binPath = phantom.path;
phantom.create(function(browser){ // Error happens here I think because the module is found
// browser.createPage(function (page){});
});
如果在 console.log binPath 中,我得到未定义。
但是在 PuTTY 中,如果我:
cd ~/phantomjs/
[root@engine phantomjs]# bin/phantomjs
phantomjs>
我是不是安装错地方了?
您需要加载全局 PhantomJS 模块而不是本地模块。
加载本地模块会阻止您的应用程序找到可运行的 bin:
var phantom = require('phantom');
此外,添加 utnas 评论:
Remove var modules = '/home/engine/node_modules/';. It's not useful. Node.js knows where to find modules.
将答案的两部分混合到一个逻辑规则中,Node.js 将始终首先从全局安装的模块中加载模块(如果存在)。您强制它加载本地的,这会阻止它找到垃圾箱。
但是如果你在 Windows,你可以尝试这样的事情:
var phantom = require('phantom');
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open("http://www.google.com", function (status) {
console.log("opened google? ", status);
page.evaluate(function () { return document.title; }, function (result) {
console.log('Page title is ' + result);
ph.exit();
});
});
});
}, {
dnodeOpts: {
weak: false
}
});
在这种情况下接受的答案并不是真正的解决方案。错误消息 You don't have 'phantomjs' installed
是来自 phantomjs-node 模块的内部错误。我自己 运行 遇到了这个错误,我设法像这样修复它:
var phantom = require('phantom');
var options = {
path: '/usr/local/bin/'
};
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open("http://www.google.com", function (status) {
console.log("opened google? ", status);
page.evaluate(function () { return document.title; }, function (result) {
console.log('Page title is ' + result);
ph.exit();
});
});
});
}, options);
注意 options
被传递给 phantom.create()
方法。 path
选项应该是包含 phantomjs 二进制文件的目录的完整路径。
我在我的 macOS 上也遇到了这个错误,所以这个命令可以解决问题。
brew install phantomjs
编辑: phantomjs 被转移到 Cask。所以在 2019 年 运行:
brew cask install phantomjs