0

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

1 回答 1

1

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

  • 您应该从处理程序中返回承诺。(你只是在实例化承诺,而不是返回它)
  • 不需要使用 bluebird,lambda 使用 node 4.3,它支持开箱即用的 Promises
  • twitter.getRequestToken 似乎使用了回调,您需要将其转换回您返回的承诺并解决/拒绝结果。在网上某处查看有关 Promise 的介绍,或者直接使用 denodeify 将回调函数转换为 Promise
于 2017-02-09T11:02:11.873 回答