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

如何使用NodeJS在AWS Lambda上运行PhantomJS

赫连越
2023-03-14
问题内容

在互联网上其他任何地方都找不到有效的答案后,我将提交此“自问自答”教程

如何PhantomJSNodeJS脚本上运行一个简单的进程AWS Lambda?我的代码在本地计算机上运行良好,但是尝试在Lambda上运行时遇到了其他问题。


问题答案:

这是一个简单PhantomJS过程的完整代码示例,以形式启动NodeJS child_process
它也可以在github上找到。

index.js

var childProcess = require('child_process');
var path = require('path');

exports.handler = function(event, context) {

    // Set the path as described here: https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/
    process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];

    // Set the path to the phantomjs binary
    var phantomPath = path.join(__dirname, 'phantomjs_linux-x86_64');

    // Arguments for the phantom script
    var processArgs = [
        path.join(__dirname, 'phantom-script.js'),
       'my arg'
    ];

    // Launc the child process
    childProcess.execFile(phantomPath, processArgs, function(error, stdout, stderr) {
        if (error) {
            context.fail(error);
            return;
        }
        if (stderr) {
            context.fail(error);
            return;
        }
        context.succeed(stdout);
    });
}

phantom-script.js

var system = require('system');
var args = system.args;

// Example of how to get arguments passed from node script
// args[0] would be this file's name: phantom-script.js
var unusedArg = args[1];

// Send some info node's childProcess' stdout
system.stdout.write('hello from phantom!')

phantom.exit();

要获取可与Amazon Linux机器一起使用的PhantomJS二进制文件,请转到PhantomJS
Bitbucket页面
并下载phantomjs-1.9.8-linux-x86_64.tar.bz2



 类似资料:
  • 这种方法很不一致。我肯定这不是实现这一点的正确方法。

  • 我正在尝试使用QT的NFC模块读取我的Android手机上的NFC标签。 根据这一页面,Qt将从5.6版本开始在Android上支持NFC。这个版本还没有发布,所以我按照本页上的说明,从源代码处构建了它,并将它安装在Qt Creator中。 我一定是错过了什么... 更新1 似乎需要修改AndroidManifest.xml文件。我尝试了不同的方法,但似乎都没有产生预期的效果。只有当清单定义如下所

  • 问题内容: 几天来,我们有了JDK8。我试图用SPDY服务器运行Jetty。在JDK8中,没有NPN支持,因此其结尾为: 我已经npn-boot-1.1.6.v20130911.jar在可与最新JDK7一起使用的CLASSPATH上运行它。 关于如何在JDK8上使用SPDY运行Jetty有任何解决方法? 问题答案: 与以前的Java版本一样,Java 11中没有Public JRE。不要与jre以

  • 问题内容: 我回到了带有Jetty和SPDY的JDK8,并且看到现在Jetty9.2支持ALPN协议而不是NPN(请参阅我的问题如何在JDK8上使用SPDY运行Jetty?)。所以我设置了: 但是现在我有了例外: 我使用和码头9.2.2.v20140723。 我从JDK 1.7和WinXP 遇到的相同错误,如果从 此执行在我的代码中指向: 似乎即使使用ALPN码头,也需要npn-boot中的类。是

  • 问题内容: 我已经看到了一些关于在Azure上运行Redis的人的参考,但是没有实现或任何形式的“方法”。有人看过这样的例子吗? 问题答案: 下载适用于Windows的Redis-请参阅https://github.com/ServiceStack/ServiceStack.Redis上的“ Redis Service builds for Windows”部分。我最终使用了dmajkic的win

  • 我有一个Docker映像,它是一个Node.js应用程序。应用程序从本地运行的Redis检索一些配置值。因此,我试图在Docker映像的同一容器中安装和运行Redis。 我如何扩展Docker文件并在其中配置Redis? 截至目前,Dockerfile如下所示: