2017-09-15 69 views
0

我建立一个网站刮板作为铬扩展,所以我使用Node.js错误当使用幻影JS和Browserify

我使用node-horseman包来获取数据,我想用browserify创建一个包,这样我就可以在客户端作为一个正常的JavaScript中使用它,而不直接需要Node.js

当我通过终端($ node horsemanOriginalFile.js)运行脚本时,它工作正常。问题是,当我创建我的bundle.jsbrowserify,并呼吁在我index.html(内扩展名)的文件,我得到的错误:

Unhandled rejection TypeError: spawn is not a function at spawnPhantom (chrome-extension://minjemngfgengofcddnbgjgnpaddoimm/bundle.js:13030:19)

CODE:

horsemanOriginalFile.js

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(); 

browserifyFileToCreateBundle.js(我运行$ node horsemanOriginalFile.js创建bundle.js文件)

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); 

然后我调用客户端创建bundle.js(当我得到的错误那是):

指数,HTML

<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>My Extension</title> 
    <script src="bundle.js"></script> 
</head> 
<body> 
</body> 
</html> 

任何解决方案?

回答

0

有一个原因称为节点 -horseman。它明显从node.js运行(产生)PhantomJS进程 - 这是Chrome扩展无法做到的。

如果你想分发这个扩展,你需要一个服务器部分,一个web服务,它将运行horseman。如果它是为个人使用而设计的,那么可以使用简单的本地服务器,比如说Express.js,然后使用drvie Horseman。

+0

现在,仅供个人使用。你可以给我一个例子,我怎样才能使用Express.js做到这一点呢? – Lioo