node.js - 'this' undefined in npm package -


i trying authenticate google through oauth2, , using googleapis npm package. this, creating small local package use in project:

package.js

npm.depends({   "googleapis": "2.0.1" });  package.describe({   name: 'google-tokens',   summary: 'library requesting google api tokens',   version: '0.0.1' });  package.onuse(function (api) {   api.use(['underscore', 'http', 'service-configuration', 'oauth', 'accounts-oauth'], ['client', 'server']);    api.addfiles('lib/tokens_client.js', 'client');   api.addfiles('lib/tokens_server.js', 'server');    api.export(['tokens']); }); 

tokens_server.js (package)

tokens = (function() {   google       = npm.require('googleapis');   oauth2client = google.auth.oauth2;   var       = {};    my.fetchtokens = function(code) {     var clientid     = meteor.settings.google.client_id;     var clientsecret = meteor.settings.google.client_secret;     var redirect     = meteor.settings.google.redirect_url;      oauth2client = oauth2client(clientid, clientsecret, redirect);      var response = async.runsync(function(done) {       oauth2client.gettoken(code, function(error, tokens) {         done(error, tokens);       });     });      console.log(response);     return response;   };    .... 

however, above code returns

exception while invoking method 'addchannel' typeerror: cannot set property 'transporter' of undefined i20150316-23:33:03.520(1)?     @ authclient (/users/madsh/programming/projects/youtubr/packages/google-tokens/.npm/package/node_modules/googleapis/node_modules/google-auth-library/lib/auth/authclient.js:25:20) i20150316-23:33:03.520(1)?     @ oauth2client (/users/madsh/programming/projects/youtubr/packages/google-tokens/.npm/package/node_modules/googleapis/node_modules/google-auth-library/lib/auth/oauth2client.js:38:23) i20150316-23:33:03.520(1)?     @ object.my.fetchtokens (packages/google-tokens/lib/tokens_server.js:11:1) 

which referes part inside node_modules folder in .npm/package/node_modules/googleapis folder, contains following

'use strict';  var defaulttransporter = require('../transporters.js');  /**  * base class authentication clients.  */ function authclient() {   this.transporter = new defaulttransporter(); <---------- failing line } /**  * export authclient.  */ module.exports = authclient; 

i have no idea why happening, advice?

you should create auth client instance, i.e.

var client = new oauth2client(... 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

ios - Possible to get UIButton sizeThatFits to work? -