使用PhantomJS找不到模块网页

时间:2018-05-03 10:02:31

标签: javascript phantomjs discord

我正在使用PhantomJS搜索网页上的文字,我尝试将其设置为:

const phantomjs = require("phantomjs-prebuilt");

if (cmd === `${prefix}check`) {
    let word = (args[0]);
    var page = require('webpage').create();
    page.open('https://discordapp.com/channels/000/000', function(err, data) {
        if (err) throw err;
        if (data.indexOf(word) >= 0) {
            message.reply(word+ ' Found!');
        } else {
            message.reply(word+ ' Not found.');
        }
    });
}

但是我收到以下错误:

  

(node:3520)UnhandledPromiseRejectionWarning:错误:找不到   模块'网页'

造成这种情况的原因是什么?

修改 我刚看到它与Node JS不兼容,是否可以调用单独的JS文件并传递(args[0]);

1 个答案:

答案 0 :(得分:1)

如果你想使用node.js中的PhantomJS,你可以使用几个软件包,其中一个是phantom。它支持Promises和async / await函数:

const phantom = require('phantom');

(async function() {
  const instance = await phantom.create();
  const page = await instance.createPage();
  await page.on('onResourceRequested', function(requestData) {
    console.info('Requesting', requestData.url);
  });

  const status = await page.open('https://stackoverflow.com/');
  const content = await page.property('content');
  console.log(content);

  await instance.exit();
})();

您当然可以从命令行启动PhantomJS并将必要的参数传递给它:

phantomjs script.js https://stackoverflow.com

然后使用system.args

在脚本中接收它们
var system = require('system');
var args = system.args;

if (args.length === 1) {
  console.log('Try to pass some arguments when invoking this script!');
} else {
  args.forEach(function(arg, i) {
    console.log(i + ': ' + arg);
  });
}

请注意,您使用page.open错误,回调函数签名中没有data var。如果您想获取所有页面内容,请参阅page.content变量:

page.open('http://phantomjs.org', function (status) {
  var content = page.content;
  console.log('Content: ' + content);
  phantom.exit();
});