簡體   English   中英

未捕獲必須使用Parse.initialize指定密鑰

[英]Uncaught You must specify a key using Parse.initialize

我已經使用Parse大約三個月了,但是已經啟動了一個新應用。 我正在使用Parse 1.4.2 js sdk。

我在向數據庫發出請求的單獨文件中有一些代碼。 該文件包含在main.js文件中。

當我嘗試部署(使用1.4.2 SDK)時,出現錯誤:

Uploading source files
Uploading recent changes to scripts...
The following files will be uploaded:
/Users/aaron/dev/Familiar/cloud/main.js
/Users/aaron/dev/Familiar/cloud/user.js
/Users/aaron/dev/Familiar/cloud/verification.js
Finished uploading files
Uncaught You must specify a key using Parse.initialize.

如果我嘗試使用最新的SDK進行部署,則會收到錯誤消息:

Uploading source files
Uploading recent changes to scripts...
The following files will be uploaded:
/Users/aaron/dev/Familiar/cloud/verification.js
Finished uploading files
TypeError: Object #<Object> has no method 'request'
    at Object.ajaxMod [as ajax] (<anonymous>:925:19)
    at e.<anonymous> (Parse.js:13:25717)
    at e.s (Parse.js:12:26759)
    at Parse.js:12:27145
    at i (Parse.js:12:27100)
    at e.n.value (Parse.js:12:27130)
    at Object.y.request (Parse.js:13:25644)
    at Object.u.default.setQueryController.find (Parse.js:13:6132)
    at e.a.value (Parse.js:13:76)
    at e.<anonymous> (verification.js:18:38)

如果我注釋掉所有的verification.js ,它將上傳,但沒有注釋就收到錯誤。 我的其他工作應用程序從未調用過Parse.initialize 為什么現在要呢?

目錄結構:

├── cloud
│   ├── comment.js
│   ├── lib
│   │   ├── config.js
│   │   ├── helpers.js
│   │   └── md5.js
│   ├── main.js
│   ├── user.js
│   └── verification.js
├── config
│   └── global.json
└── public
    └── index.html

main.js

require("cloud/user.js");
require("cloud/comment.js");
require("cloud/verification.js");

Verification.js

var conf = require("cloud/lib/config.js").conf;
var helpers = require("cloud/lib/helpers.js");

function createSmsVerification(user) {
    return getUserSmsVerification(user)
        .then(function (verification) {
            var verificationQuery = new Parse.Query("Verification");
            return verificationQuery.first(); <-- this is the line causing the error
        })
        .then(function (verification) {
            return verification;
        }, function (error) {
            return Parse.Promise.error("createSmsVerification - " + error.message);
        });
}
exports.createSmsVerification = createSmsVerification();

function getUserSmsVerification(user) {
    return Parse.Promise.as();
}

user.js

var helpers         = require("cloud/lib/helpers.js"),
    conf            = require("cloud/lib/config.js").conf,
    sms             = require("cloud/sms.js"),
    verification    = require("cloud/verification.js");


Parse.Cloud.define("register", function(request, response){
    Parse.Cloud.useMasterKey();
    var phoneNumber = request.params.phoneNumber;
    var user;
    var userQuery = new Parse.Query(Parse.User);
    userQuery.equalTo("username", phoneNumber);

    return userQuery
        .first(function(userResult){
            if(!helpers.isDefined(userResult)){
                userResult = createNewUser(phoneNumber);
            }else{
                userResult.set("smsVerified", false);
            }
            return userResult.save();
        })
        .then(function(userResult){
            user = userResult;
            return verification.createSmsVerification(user);
        })
        .then(function(){
            response.success();
        }, function (error){
            console.error("register - " + error.message);
            response.error(error.message);
        });
});

function createNewUser(phoneNumber){
    var newUser = new Parse.User();
    newUser.set("username", helpers.phoneToUsername(phoneNumber));
    newUser.set("password", helpers.generatePassword(phoneNumber));
    newUser.set("smsVerified", false);
    return newUser;
}

我遇到了同樣的問題,並且發現每次嘗試在全局級別調用函數時都會遇到相同的錯誤。 我唯一可以調用函數的時間是在其他函數的范圍之內。

與您的代碼有關,我想您正在嘗試導出函數本身,例如

exports.createSmsVerification = createSmsVerification;

您擁有的代碼:

exports.createSmsVerification = createSmsVerification();

實際調用該函數並導出結果。

這花了我大約3/4的時間才能找到答案。 它不在文檔中。 該錯誤根本不清楚。

該問題似乎與使用export的方式有關。 我假設使用exports.methodName = methodName()嘗試調用該方法,而不是將其設置為exports的屬性。 exports.methodName = methodName也可以正常工作。

以下代碼無效

function createSmsVerification(user) {
    return getUserSmsVerification(user)
        .then(function (verification) {
            var verificationQuery = new Parse.Query("Verification");
            return verificationQuery.first(); <-- this is the line causing the error
        })
        .then(function (verification) {
            return verification;
        }, function (error) {
            return Parse.Promise.error("createSmsVerification - " + error.message);
        });
}
exports.createSmsVerification = createSmsVerification();

以下代碼可以正常工作

exports.createSmsVerification = function(user) {
    return getUserSmsVerification(user)
        .then(function (verification) {
            var verificationQuery = new Parse.Query("Verification");
            return verificationQuery.first();
        })
        .then(function (verification) {
            return verification;
        }, function (error) {
            return Parse.Promise.error("createSmsVerification - " + error.message);
        });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM