我正在构建一个网站抓取工具作为Chrome扩展程序,因此我正在使用combineReducers
。
我使用node-horseman包来获取数据,我想使用browserify创建一个包,所以我可以在客户端使用它作为普通的javascript,而不需要直接redux-injector
。
当我通过终端(Node.js
)运行脚本时,它运行正常。问题是,当我使用Node.js
创建$ node horsemanOriginalFile.js
并在我的bundle.js
(内部扩展名)中调用该文件时,我收到错误:
未处理拒绝TypeError:spawn不是spawnPhantom的函数(chrome-extension://minjemngfgengofcddnbgjgnpaddoimm/bundle.js:13030:19)
CODE:
horsemanOriginalFile.js
browserify
browserifyFileToCreateBundle.js (我运行index.html
创建var Horseman = require('node-horseman');
var horseman = new Horseman();
horseman
.userAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0')
.open('https://somesite.com')
.wait(7000)
.html()
.log()
.close();
文件)
$ node horsemanOriginalFile.js
然后我在客户端调用创建的bundle.js
(当我收到错误时):
索引,HTML
var browserify = require('browserify');
var b = browserify();
b.add('horsemanOriginalFile.js');
const fs = require('fs');
const writable = fs.createWriteStream('bundle.js');
b.bundle().pipe(writable);
任何解决方案?
答案 0 :(得分:0)
这个包被称为节点 -horseman的原因。它显然是从node.js运行(生成)一个PhantomJS进程 - 这是Chrome扩展无法做到的。
如果你想发布这个扩展,你需要一个服务器的一部分,一个webservice,它将运行Horseman。如果它意味着个人使用,你可以用一个简单的本地服务器,比如Express.js和drvie Horseman从那里启动。