Я установил модуль nodejs «googleapis» (npm install googleapis
) в экземпляр Azure Mobile Services, и я хотел выполнить быстрый тест с некоторым примером кода Я нашел здесь https://www.npmjs.org/package/googleapis. После попытки пример кода, который создает текстовый файл в Google диске я получаю следующее сообщение об ошибке в консоли:NodeJS - модуль API Google - [TypeError: невозможно прочитать прототип свойства 'undefined]
[TypeError: Cannot read property 'prototype' of undefined]
ошибка происходит в строке 40 текущей версии Google-API-nodejs-клиент/APIs/index.js (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)
Вот строка 24 сендвич-stream.js:
SandwichStream.prototype = Object.create(Readable.prototype, {
constructor: SandwichStream
});
nodejs версия:
Node version: v0.8.28
Путь следующий: D: \ home \ site \ wwwroot \ App_Data \ config \ scripts \ node_modules \ googleapis \ apis/drive/v2 и ошибка, возвращаемая в строке 45 индекса.js [TypeError: Can not read property «prototype» undefined] – DDA
Я подтверждаю, что путь правильный. D: \ home \ site \ wwwroot \ App_Data \ config \ scripts \ node_modules \ googleapis \ apis/drive/v2.js - это местоположение файла на сервере. – DDA
Я считаю, что проблема вызвана смешанными разделителями путей в системах Win32. Я отправил запрос [pull request] (https://github.com/google/google-api-nodejs-client/pull/271), который, как мы надеемся, исправит это. Если можно, попробуйте изменить * apis/index.js * в своем проекте, чтобы он содержал изменения, внесенные в PR, и сообщите нам, если это сработает для вас. –