我如何在 claudiajs 中使用节点包以在 aws lambda 中使用它

How can i use node packages in claudiajs for use it in aws lambda

如何在 claudiajs 中使用节点包。我尝试在其中使用 node-twitter-api 和 node-twitter 但得到空白响应。 承诺是否需要我在lambda中对此一无所知。 如果有人有任何示例或文档可能有多个节点包与 lambda 的 claudiajs 一起使用。参考:http://claudia.js , https://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;
         });
  });

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

  • 你应该 return 处理程序的承诺。 (您只是在实例化承诺,而不是 returning 它)
  • 无需使用 bluebird,lambda 使用开箱即用支持 Promises 的节点 4.3
  • twitter.getRequestToken 似乎使用回调,您需要将其转换回您return 的承诺和 resolve/reject 结果。看看网上某处关于 promises 的介绍,或者直接使用 denodeify 将回调函数变成 promise