NodeJS – Google API模块 –

我将nodejs模块“googleapis”( npm install googleapisnpm install googleapis到Azure移动服务实例,我想用我在https://www.npmjs.org/package/googleapisfind的一些示例代码做一个快速testing。 尝试在谷歌驱动器中创build一个文本文件的代码示例后,我在控制台中得到以下错误信息:

 [TypeError: Cannot read property 'prototype' of undefined] 

错误发生在当前版本的google-api-nodejs-client / apis / index.js的第40行( https://github.com/google/google-api-nodejs-client/blob/master/apis/ index.js ):

 var Endpoint = require(__dirname + '/' + filename + '/' + path.basename(version)); 

在debugging时,我可以看到上面的方法中使用的path如下:

 D:\home\site\wwwroot\App_Data\config\scripts\node_modules\googleapis\apis\drive\v2 

我已经证实path是正确的。

这是我试图运行的代码:

 var google = require('googleapis'); var OAuth2Client = google.auth.OAuth2; var CLIENT_ID = 'xxxx'; var CLIENT_SECRET = 'xxxxxx'; var REDIRECT_URL = 'xxxxx'; var oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL); oauth2Client.setCredentials({ access_token: identities.google.accessToken }); var drive = google.drive({ version: 'v2', auth: oauth2Client }); drive.files.insert({ resource: { title: 'Test', mimeType: 'text/plain' }, media: { mimeType: 'text/plain', body: 'Hello World' } }, function(err, response) { console.log('error:', err, 'inserted:', response.id); }); 

问题的根源是什么?

这是错误堆栈跟踪:

 TypeError: Cannot read property 'prototype' of undefined at Object.<anonymous> (D:\home\site\wwwroot\App_Data\config\scripts\node_modules\googleapis\node_modules\multipart-stream\node_modules\sandwich-stream\lib\sandwich-stream.js:24:50) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (D:\home\site\wwwroot\App_Data\config\scripts\node_modules\googleapis\node_modules\multipart-stream\index.js:1:78) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) 

这里是sandwich-stream.js的第24行:

 SandwichStream.prototype = Object.create(Readable.prototype, { constructor: SandwichStream }); 

nodejs版本是:

 Node version: v0.8.28 

我的猜测是,Azure移动服务正在做一些与__dirname使文件path无法正确parsing的时髦。 你可以检查你正在运行这个日志吗? 实际的错误应该是从这一行console.log'd: https : //github.com/google/google-api-nodejs-client/blob/master/apis/index.js#L45