Dar*_*ook 12 node.js npm phantomjs casperjs
是否可以安装通过npm安装的节点模块,然后require从casperjs脚本安装它?
(我在node.js中看到很多用于运行casper或phantom的帖子和工具,但这不是我想要做的.)
casperjs文档似乎表示这是可能的,但只能用手写的玩具模块显示,它们并没有真正做任何事情.我正在尝试安装的真实模块是imap,但是在这一点上我无法使用任何模块,甚至是内置的模块net.简单的例子:
npm install imap
echo "var test = require('imap');" > test.js
casperjs test.js
Run Code Online (Sandbox Code Playgroud)
给我:
CasperError: Can't find module imap
/usr/local/src/casperjs/bin/bootstrap.js:263 in patchedRequire
test.js:1
Run Code Online (Sandbox Code Playgroud)
(我可以看到imap模块npm ls,我可以从node.js脚本中使用它.)
或者使用内置模块:
echo "var test = require('net');" > test.js
casperjs test.js
Run Code Online (Sandbox Code Playgroud)
抱怨"找不到模块网"
我有npm --version1.4.14和nodejs --versionv0.10.29.我想知道那些太旧了吗?(Casper是1.1.0-beta,Phantom是1.9.7,两者都是最新版本.)
Art*_* B. 13
PhantomJS和SlimerJS(用于CasperJS的引擎)不是Node.js模块.为方便起见,它们可以通过npm安装.它们具有与Node.js不同的模块的不同基础结构.
您将无法使用imap或依赖于该net模块的任何模块.正如Fanch所指出的,有些模块可以在phantomjs运行时内部工作.
如果模块仅使用某些本机node.js模块的某些功能,您可以尝试更改实现以使用phantomjs提供的API.我不认为这很容易.大多数时候你会遇到一堵墙.
在这种情况下imap,它是相当绝望的.你甚至无法重新实现require("net").Socket,因为phantomjs不支持WebSockets(至少在1.9.7中).
这里有一个颜色模块的例子:
var colors = require('colors');
casper.test.begin('\n*Colors module*\n', function suite(test) {
casper.start()
.thenOpen('https://www.google.fr/', function() {
console.log("test require\n".zebra);
console.log("test require\n".rainbow);
console.log("test require\n".red.underline.bold);
})
.run(function() {
test.done();
});
});
Run Code Online (Sandbox Code Playgroud)
casperjs test testnode.js
输出:

当所需模块具有依赖性时,似乎并不那么简单.
| 归档时间: |
|
| 查看次数: |
8031 次 |
| 最近记录: |