phantomjs找不到节点模块' crypto'访问aws-sdk时

时间:2016-08-10 09:08:47

标签: javascript node.js amazon-web-services phantomjs node-modules

我有一个使用幻像js和nodejs app的应用程序。我在该节点应用程序中使用了几个节点模块,它通过幻像js运行。我需要使用amazon node aws-sdk。我用

安装了它
npm install aws-sdk

该节点应用程序能够在我执行此操作后找到

var AWS = require('aws-sdk');

但是它开始提示其他本机节点js模块的错误,其中三个是专门的,“加密”,“定时器”,“路径”等。我检查了/ usr / lib / nodejs文件夹,那些都在那里,那么为什么phantomjs节点app无法找到它们呢? 具体错误

Error: Cannot find module 'crypto'
 phantomjs://platform/bootstrap.js:299 in require
 phantomjs://platform/bootstrap.js:263 in require
 phantomjs://platform/util.js:4
TypeError: undefined is not a function (evaluating 'AWS.util.update')

 phantomjs://platform/core.js:16
Error: Cannot find module 'path'

 phantomjs://platform/bootstrap.js:299 in require
 phantomjs://platform/bootstrap.js:263 in require
 phantomjs://platform/api_loader.js:3
Error: Cannot find module 'events'

 phantomjs://platform/bootstrap.js:299 in require
 phantomjs://platform/bootstrap.js:263 in require
 phantomjs://platform/xml2js.js:12
 phantomjs://platform/xml2js.js:538
TypeError: undefined is not an object (evaluating 'AWS.XML.Parser = require('./xml/node_parser')')

如果我直接转到节点shell并且需要(' aws-sdk'),它确实可以正常工作。 我从像这样的phantomjs运行节点应用程序

phantomjs test.js 

/usr/bin/phantomjs test.js

它只是不与幻影合作,任何想法和帮助都会在这里受到赞赏。

1 个答案:

答案 0 :(得分:3)

PhantomJS与node.js不兼容。

当您像

一样运行它时
/usr/bin/phantomjs test.js

你在PhantomJS里面运行一个脚本。

如果您想从PhantomJS启动node.js应用程序,可以使用exec或spawn方法来执行此操作,请参阅this answer