【发布时间】:2014-06-12 00:00:46
【问题描述】:
我在 bins 文件夹中提取了 casperjs 和 phantomjs。
我想在我的 nodejs 应用程序中使用 casperjs。
这是我当前的脚本:
var exec = require('child_process'),
path = require('path');
// Directory paths where I extracted phantomjs and casperjs.
var phantomjs = path.resolve(__dirname, 'bins', 'phantomjs', 'phantomjs');
var casperjs = path.resolve(__dirname, 'bins', 'casperjs', 'bin', 'casperjs');
// I tried to edit the PATH but it doesn't work.
// process.env.PATH = process.env.PATH + ':' + phantomjs;
// process.env.PATH = process.env.PATH + ':' + casperjs;
// Now launch a casperjs script and get result.
var p = exec.spawn(casperjs, ['test.js']);
p.stdout.on('data', function(data) {
console.log(data.toString());
});
当我运行我的脚本时,我得到一个错误:
Fatal: [Errno 2] No such file or directory; did you install phantomjs?
有没有办法通过 exec.spawn() 使用 phantomjs 和 casperjs?
编辑:我发现了我的问题,我在系统 PATH 中添加了错误的路径。
我添加了文件的路径,但这很愚蠢,我必须添加目录的路径!
这是正确的代码:
var exec = require('child_process'),
path = require('path');
// Directory paths where I extracted phantomjs and casperjs.
var phantomjs = path.resolve(__dirname, 'bins', 'phantomjs');
var casperjs = path.resolve(__dirname, 'bins', 'casperjs', 'bin');
// console.log(process.env.PATH);
process.env.PATH = process.env.PATH + ':' + phantomjs;
process.env.PATH = process.env.PATH + ':' + casperjs;
// console.log(process.env.PATH);
// Now launch a casperjs script and get result.
var p = exec.spawn('casperjs', ['test.js']);
p.stdout.on('data', function(data) {
console.log(data.toString());
});
【问题讨论】:
-
您尝试从npm 安装它吗?带有
-g标志。你不会有这样的 PATH 问题。
标签: node.js phantomjs casperjs