【问题标题】:Error When using Phantom JS and Browserify使用 Phantom JS 和 Browserify 时出错
【发布时间】:2017-09-15 18:28:32
【问题描述】:

我正在构建一个 site scraper 作为 chrome 扩展,所以我使用 Node.js

我正在使用node-horseman 包来获取数据,我想使用browserify 创建一个包,所以我可以在客户端将它用作普通的javascript,而无需直接使用Node.js .

当我通过终端 ($ node horsemanOriginalFile.js) 运行脚本时,它运行良好。问题是,当我用browserify 创建我的bundle.js 并在我的index.html(内部扩展名)中调用文件时,我得到了错误:

未处理的拒绝类型错误:spawn 不是 spawnPhantom 的函数 (chrome-extension://minjemngfgengofcddnbgjgnpaddoimm/bundle.js:13030:19)

代码:

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>

有什么解决办法吗?

【问题讨论】:

    标签: node.js web-scraping phantomjs browserify


    【解决方案1】:

    这个包被称为 node-horseman 是有原因的。它显然从 node.js 运行(生成)一个 PhantomJS 进程——这是 Chrome 扩展程序无法做到的。

    如果你想分发这个扩展,你需要它的一个服务器部分,一个运行 Horseman 的 web 服务。如果它是供个人使用的,你可以启动一个简单的本地服务器,比如 Express.js,然后从那里 drvie Horseman。

    【讨论】:

    • 目前,仅供个人使用。你能给我举个例子,我该如何使用 Express.js 做到这一点?
    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 2018-08-26
    • 2017-09-24
    • 1970-01-01
    • 2013-09-06
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多