Cannot find module 'casper' when invoking through PhantomJS

匿名 (未验证) 提交于 2019-12-03 02:18:01

问题:

I installed PhantomJS in C:\xampp\htdocs\phantom and also I installed CasperJS in this folder C:\xampp\htdocs\casper

When I tried to run these sample code on casper site using phantomjs test.js command:

var casper=require('casper').create(); casper.start('http://google.fr/');  casper.thenEvaluate(function(term) {     document.querySelector('input[name="q"]').setAttribute('value', term);     document.querySelector('form[name="f"]').submit(); }, 'CasperJS');  casper.then(function() {     // Click on 1st result link     this.click('h3.r a'); });  casper.then(function() {     console.log('clicked ok, new location is ' + this.getCurrentUrl()); });  casper.run(); 

It gives me an error telling me that:

Error: Cannot find module 'casper'

What did I do wrong?

回答1:

If you want to run CasperJS through PhantomJS (since you invoke phantomjs test.js) you need some bootstrapping code at the beginning of the script:

phantom.casperPath = 'path/to/node_modules/casperjs'; phantom.injectJs('path/to/node_modules/casperjs/bin/bootstrap.js'); 

Keep in mind that even on windows, you need to use a forward slash.

If you need the test environment then you also need the line:

phantom.casperTest = true; 

Everything is taken from this question: Running 'casperjs test' in phantom

Although this is possible you shouldn't do it. You should invoke CasperJS directly through its executable/batch file in node_modules/casperjs/batchbin.



回答2:

okay i know what i did wrong i had a mistake on the path i used for casperjs, i should have used "C:\xampp\htdocs\casper\batchbin" instead of "C:\xampp\htdocs\casper\bin". i will not delete this post, this might help other newbies to casperjs just like me.



回答3:

The error issue is with the path you have install the casper.js and phantom.js

//I am indicating the installation directory of casper.js phantom.casperPath = '/usr/local/share/casperjs';  // indicating the inner directory of casper js which contains bootstrap. phantom.injectJs(phantom.casperPath + '/bin/bootstrap.js'); 

I hope it will be helpful.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!