首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CasperJS和AWS

CasperJS和AWS
EN

Stack Overflow用户
提问于 2016-10-15 05:44:12
回答 2查看 2K关注 0票数 0

我正试着用我的AWS Lambda函数来工作。

代码语言:javascript
复制
{
"errorMessage": "Cannot find module 'casper'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:276:25)",
"Module.require (module.js:353:17)",
"require (internal/module.js:12:17)",
"Object.<anonymous> (/var/task/index.js:3:14)",
"Module._compile (module.js:409:26)",
"Object.Module._extensions..js (module.js:416:10)",
"Module.load (module.js:343:32)",
"Function.Module._load (module.js:300:12)",
"Module.require (module.js:353:17)"
]
}

我一直在发现Lambda无法检测到的错误。我将zip文件上传到Lambda中,并在压缩文件之前将casperjs模块安装到我的目录中。

我的package.json文件说我安装了casperjs。

代码语言:javascript
复制
{
"name": "lambda",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"casperjs": "^1.1.3",
} 
}

有人知道我做错了什么吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-20 14:42:24

因为CasperJs依赖于PhantomJ,所以您可以将其设置得非常类似于这个repo:https://github.com/TylerPachal/lambda-node-phantom

主要的区别是您需要添加和目标CasperJs,并且需要确保CasperJs能够找到并加载PhantomJs。

  1. 在包目录中创建一个node_modules目录。
  2. 向packages.json文件中添加CasperJs的依赖项: “依赖项”:{ "casperjs":“最新”}
  3. 在终端中,导航到包目录并运行“npm更新”,将CasperJs包添加到node_modules目录中。
  4. 假设您希望使用“test”参数运行CasperJs,则需要将index.js文件更改为如下所示: var childProcess =child_process(‘child_process’);var path = require(' path ');exports.handler =函数(事件、上下文){ //设置路径,如下所述:https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/ process.env' path‘= process.env'PATH’+ ':‘+process.env’‘LAMBDA_TASK’;//将路径设置为casperjs = path.join(__dirname,‘node_模块/casperjs/bin/casperjs’);// casper脚本var processArgs = 'test',path.join(__dirname,'casper_test_file.js');//启动子进程childProcess.execFile(casperPath、processArgs、函数(错误、stdout、stderr) { if (错误){context.fail(错误);返回;}如果(stderr) {context.fail(错误);返回;}context.succeed(标准输出);});} 如果不想使用'test‘参数运行CasperJ,只需将其从参数列表中删除即可。
  5. 包根目录中的phantomjs二进制文件需要重命名为幻影it,以便CasperJs能够找到它。如果您想获得一个新版本的PhantomJ,您可以在这里获得一个版本:https://bitbucket.org/ariya/phantomjs/downloads。确保下载Linux86_64.tar.bz2类型,以便它可以在Lambda中运行。下载完后,只需从bin目录中提取一个新的二进制文件,并将其放在根目录中。
  6. 为了让Lambda拥有访问所有文件的权限,在类似Unix的操作系统中压缩包是最容易的。确保包中的所有文件都具有读取和执行权限。来自包目录:chmod -R o+rx *。然后用:zip -r my_package.zip *压缩它。
  7. 上传压缩包到您的Lambda功能。
票数 3
EN

Stack Overflow用户

发布于 2016-10-15 11:33:24

根据Casper.js文档,它不是一个实际的节点模块。因此,您不能在Package.json中要求它,也不能用节点模块将其压缩。您需要找到如何在lambda实例上安装它,或者找到一个实际的节点模块来实现您想要的功能。我怀疑在lambda上安装casper是不可能的,但这只是我的直觉。

警告,虽然CasperJS可以通过npm安装,但它不是一个NodeJS模块,并且不会开箱即用NodeJS。不能在节点中使用require(‘casperjs’)加载casper。请注意,CasperJS无法使用绝大多数NodeJS模块。尝试并运用你的最佳判断力。

http://docs.casperjs.org/en/latest/installation.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40055453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档