我怎样才能在claudiajs中使用节点包在aws lambda中使用它

时间:2017-02-08 05:56:29

标签: node.js aws-lambda node-twitter

如何在claudiajs中使用节点包。我尝试在其中使用node-twitter-api和node-twitter,但得到空白响应。 承诺将要求或不要我在lambda中不知道它。 如果任何人有任何示例或文档可能有多个节点包用claudiajs为lambda。参考:http://claudia.jshttps://vimeo.com/156232471

  var ApiBuilder = require('claudia-api-builder'),
  api = new ApiBuilder();
  var twitterAPI = require('node-twitter-api');
  var Promise = require("bluebird");
  api.get("/request-token", function(request) {
        'use strict';
         new Promise(function(resolve) {
             var twitter = new twitterAPI({
                consumerKey: "ckey",
                consumerSecret: "cskey",
                callback: 'http://localhost:3000/access-token'
             });
             var res;
             twitter.getRequestToken(function(err, requestToken, requestSecret) {      
                 if (err)
                     res = err;
                 else {
                     var _requestSecret = requestSecret;
                     var url = "https://twitter.com/oauth/authenticate?oauth_token" + requestToken;
                     res = url;        
                     //res.redirect(url);
                 }
             });
             return res;
         });
  });

1 个答案:

答案 0 :(得分:1)

你可以使用普通的javascript NPM命令(例如npm install <package-name> -S)包含到package.json中来使用包,查看https://claudiajs.com/tutorials/packaging.html以获取更多信息),但是根据你的代码,这不是似乎是问题所在。

  • 你应该从处理程序中返回承诺。 (你只是实例化承诺,而不是回复它)
  • 不需要使用bluebird,lambda使用节点4.3,它支持开箱即用的Promise
  • twitter.getRequestToken似乎使用回调,您需要将其转换回您要返回的承诺并解决/拒绝结果。查看在线某处的promises介绍,或者直接使用denodeify将回调函数转换为承诺