当前位置: 首页 > 面试题库 >

使用casperjs中的节点模块

阙星渊
2023-03-14
问题内容

是否可以安装通过npm安装的节点模块,然后require从casperjs脚本安装它?

(我在node.js内看到了很多运行casper或phantom的帖子和工具,但这不是我想要的。)

casperjs文档似乎说这是可能的,但只能使用手写玩具模块进行显示,而实际上并没有做任何事情。我要安装的实际模块是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脚本中很好地使用它。)

或者使用内置模块:

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,这两个都是最新版本。)


问题答案:

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。



 类似资料:
  • 问题内容: 我正在尝试使其工作,但似乎无法在SO的任何地方找到解决方案。尝试编译此单文件应用程序时: 使用命令“ tsc app.ts –module’commonjs’”,我得到以下错误(不使用– module标志给我一个额外的错误,告诉我我需要它来编译外部模块): 问题答案: TypeScript需要知道它存在。 为节点安装类型definitinos: 旧答案 遵循这两个步骤 从此处下载文件:

  • 问题内容: 我正在看一位同事写的一些代码,她在require语句中使用该符号。这是这些文件之一的第一行: 当我尝试运行此代码时,出现错误: 坦率地说,我的目录中没有需要识别的东西!我似乎讨厌这里发生的一些魔术。 我所能猜测的是,这是我尚未接触到的一些晦涩的npm或Node技巧,或者也许是我没有得到其他一些暗黑的配置技巧。任何信息都值得赞赏,即使这只是对require的工作方式的解释。 其他想法:主

  • CasperJS 是一个开源的导航脚本和测试工具,使用 JavaScript 基于 PhantomJS 编写,用于测试 Web 应用功能,Phantom JS是一个服务器端的 JavaScript API 的 WebKit。其支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG 可轻松的定义导航场景,提供一些很有用的高级函数、方法和语法糖用于定义常用的任务

  • <html>位于网页的顶端 它没有父辈,称之为根节点 1.元素节点(element node)   可以说,整个DOM模型都是由元素节点(element node)组成 比如文本段落元素“<p>”,无序清单的名称“<ul>”,元素节点包含其他元素、 2.文本节点(text node)   例如<h2>中的文本“标题1”,<li>中的文字内容,这些具体文本在DOM称为(text node) 3.属性

  • 问题内容: 我正在看一位同事写的一些代码,她在require语句中使用该符号。这是这些文件之一的第一行: 当我尝试运行此代码时,出现错误: 坦率地说,我的目录中没有需要识别的东西!我似乎讨厌这里发生的一些魔术。 我只能猜测的是,这是我还没有接触过的一些晦涩的npm或Node技巧,或者也许是我没有得到其他一些黑暗的配置技巧。任何信息都值得赞赏,即使这只是对require的工作方式的解释。 其他想法:

  • 我有一个关于NodeJS中Assert模块的问题。 在“测试”之外使用Assert模块是不是很好的做法,我的意思是在生产中,比如如果我有一个函数来求和两个数字,我可以使用Assert模块来检查这两个参数是数字还是不是数字 这只是一个简单的例子,但您可以理解这一点 这会不会影响代码执行或者速度什么的。 提前致谢