1

nodejs モジュール "googleapis" ( npm install googleapis) を Azure Mobile Services インスタンスにインストールしました。ここで見つけたサンプル コードで簡単なテストを行いたいと思いましたhttps://www.npmjs.org/package/googleapis。Google ドライブにテキスト ファイルを作成するコード サンプルを試した後、コンソールに次のエラー メッセージが表示されます。

[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));

デバッグ時に、上記のメソッドで使用されているパスが次のように表示されます。

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

パスが正しいことを確認しました。

実行しようとしたコードは次のとおりです。

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
4

1 に答える 1

2

私の推測では、Azure Mobile Services が __dirname で奇妙なことを行っているため、ファイル パスが正しく解決されていません。これを実行しているログを確認できますか? 実際のエラーは、次の行から console.log に記録されるはずです: https://github.com/google/google-api-nodejs-client/blob/master/apis/index.js#L45

于 2014-08-30T16:05:01.930 に答える