是否可以安装通过npm安装的节点模块,然后require从casperjs脚本安装它?
require
(我在node.js内看到了很多运行casper或phantom的帖子和工具,但这不是我想要的。)
casperjs文档似乎说这是可能的,但只能使用手写玩具模块进行显示,而实际上并没有做任何事情。我要安装的实际模块是imap,但目前无法使任何模块正常工作,即使是内置模块也是如此net。简单的例子:
imap
net
npm install imap echo "var test = require('imap');" > test.js casperjs test.js
给我:
CasperError: Can't find module imap /usr/local/src/casperjs/bin/bootstrap.js:263 in patchedRequire test.js:1
(我可以从中看到imap模块npm ls,也可以从node.js脚本中很好地使用它。)
npm ls
或者使用内置模块:
echo "var test = require('net');" > test.js casperjs test.js
抱怨“找不到模块网”
我有npm --version1.4.14和nodejs --versionv0.10.29。我想知道这两个都太老了吗?(Casper是1.1.0-beta,而Phantom是1.9.7,这两个都是最新版本。)
npm --version
nodejs --version
PhantomJS和SlimerJS(用于CasperJS的引擎)不是Node.js模块。为了方便,可以通过npm安装它们。它们具有与Node.js不同的模块的基本基础架构。
您将无法使用imap或依赖于该net模块的任何模块。正如Fanch所指出的,有些模块可以在phantomjs运行时内部工作。
如果模块仅使用某些本机node.js模块的功能,则可以尝试将实现更改为使用phantomjs提供的API。我认为这并不容易。大多数时候,您会碰壁。
在的情况下imap,这是毫无希望的。您甚至无法重新实现require("net").Socket,因为phantomjs(至少在1.9.7中)不支持WebSockets。
require("net").Socket