我正在使用Parse.com和express.js。我對webdev很陌生,Parse.com使事情變得複雜。Express.js模塊&Parse.com Cloud代碼
我想使用外部SDK - QuickBlox。下面是SDK的結構:
當我拿quickblox.js
並將其包含在一個<script>
標籤,然後調用QB.init()
那麼SKD工作正常。
但是,我想把所有這些功能放在我的路線之一。問題是,因爲我使用Parse的雲服務器,所以我不能npm install
。
所以我複製quickblox.js
到雲文件夾中,我試圖將其加載的模塊,像這樣:
var QB = require('cloud/libs/quickblox.js');
我做同樣的事情async.js
和它的工作。但是,它不適用於Quickblox。當我打電話QB.init()
現在我得到:
TypeError: Object [object Object] has no method 'init'
事情是,我是新來的這個環境,所以我不能告訴我們,如果這是一些基本的東西,我做錯了或者它的一些特殊情況。
編輯
我看着quickblox.js
,發現這些可能的相關線路:
// Creating a window scoped QB instance
if (typeof window !== 'undefined' && typeof window.QB === 'undefined') {
window.QB = new QuickBlox();
}
和
// Browserify exports
module.exports = (typeof window === 'undefined') ? new QuickBlox() : QuickBlox;
那麼,既然我沒有運行該客戶端那麼沒有window
對象,並且從來沒有window.QB = new QuickBlox();
得到運行,對吧?這是對.js文件中QB
的唯一引用。
而且由於(typeof window === 'undefined')
應該是真實的,那麼module.exports
是越來越設置爲new QuickBlox()
...但我引用什麼目的去init()
?
這裏是init()
定義:
// Actual QuickBlox API starts here
function QuickBlox() {}
QuickBlox.prototype.init = function(appId, authKey, authSecret, debug) {
this.service = new Proxy();
this.auth = new Auth(this.service);
this.users = new Users(this.service);
this.content = new Content(this.service);
this.location = new Location(this.service);
this.messages = new Messages(this.service);
this.data = new Data(this.service);
// Initialization by outside token
if (typeof appId === 'string' && !authKey && !authSecret) {
this.service.setSession({ token: appId });
appId = '';
}
config.creds.appId = appId;
config.creds.authKey = authKey;
config.creds.authSecret = authSecret;
if (debug) {
config.debug = debug;
console.log('QuickBlox.init', this);
}
};
And the actual quickblox.js
file on github.
你必須學習如何添加quickblox服務器端庫,我也有同樣的問題。並試圖找到方法。 – AmirModiri
你可以用quickblox api來做到這一點。但在這種情況下,您需要添加一些客戶端API請求。 – AmirModiri