2017-10-04 57 views
1

當試圖運行Android的手機上的一個項目,Appcelerator的給出了一個錯誤:Appcelerator的[錯誤]:無法解析...控制器/圖片 - list.js.js

[INFO] : Alloy compiled in 6.57967s

[INFO] : Alloy compiler completed successfully

[INFO] : JavaScript files need to be encrypted

[INFO] : Processing JavaScript files

[ERROR] : Failed to parse /Users/bas/Documents/Appcelerator_Studio_Workspace/Whatever-App-master/Resources/android/alloy/controllers/picture-list.js.js

[ERROR] : Invalid left-hand side in assignment expression (21:4)

的蠢事是Appcelerator自己創建的文件:

[INFO] : [picture-list.js.xml] view processing...

[INFO] : style: "picture-list.js.tss"

[INFO] : view: "picture-list.js.xml"

[INFO] : created: "Resources/android/alloy/controllers/picture-list.js.js"

[INFO] : created: "Resources/android/alloy/styles/picture-list.js.js"

...那麼爲什麼要製作一個文件,然後再抱怨呢?

該應用程序現在沒有運行,編譯後停止。

畫面list.js:

function __processArg(obj, key) { 
    var arg = null; 
    if (obj) { 
     arg = obj[key] || null; 
     delete obj[key]; 
    } 
    return arg; 
} 

function Controller() { 
    require("/alloy/controllers/BaseController").apply(this, Array.prototype.slice.call(arguments)); 
    this.__controllerPath = "complaints/picture-list"; 
    this.args = arguments[0] || {}; 
    if (arguments[0]) { 
     __processArg(arguments[0], "__parentSymbol"); 
     __processArg(arguments[0], "$model"); 
     __processArg(arguments[0], "__itemTemplate"); 
    } 
    var $ = this; 
    var exports = {}; 
    $.__views.pictures = Ti.UI.createTableViewSection({ // line 21 
     id: "pictures" 
    }); 
    $.__views.pictures && $.addTopLevelView($.__views.pictures); 
    exports.destroy = function() {}; 
    _.extend($, $.__views); 
    _.extend($, exports); 
} 

var Alloy = require("/alloy"), Backbone = Alloy.Backbone, _ = Alloy._; 

module.exports = Controller; 

畫面list.js.js:

function __processArg(obj, key) { 
    var arg = null; 
    if (obj) { 
     arg = obj[key] || null; 
     delete obj[key]; 
    } 
    return arg; 
} 

function Controller() { 
    require("/alloy/controllers/BaseController").apply(this, Array.prototype.slice.call(arguments)); 
    this.__controllerPath = "picture-list.js"; 
    this.args = arguments[0] || {}; 
    if (arguments[0]) { 
     __processArg(arguments[0], "__parentSymbol"); 
     __processArg(arguments[0], "$model"); 
     __processArg(arguments[0], "__itemTemplate"); 
    } 
    var $ = this; 
    var exports = {}; 
    $.__views.picture - list.js = Ti.UI.createView({ // line 21 
     id: "picture-list.js" 
    }); 
    $.__views.picture - list.js && $.addTopLevelView($.__views.picture - list.js); 
    exports.destroy = function() {}; 
    _.extend($, $.__views); 
    _.extend($, exports); 
} 

var Alloy = require("/alloy"), Backbone = Alloy.Backbone, _ = Alloy._; 

module.exports = Controller; 

回答

0

由於編譯器絨毛的JavaScript文件,這也驗證了它。

所以你看到的是在畫面list.js文件中的JavaScript錯誤,我承擔21行

您可以找到有關錯誤的詳細信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side

編輯:基於你的代碼。

你可以看到這一點,(它是無效的JS)

$.__views.picture - list.js = Ti.UI.createView({ // line 21 
    id: "picture-list.js" 
}); 

這是由-在你原來的代碼可能引起的,或與控制器的名稱做。名稱和ID不支持-。我建議用下劃線改變它,所以picture_list.js

JavaScript中的虛線(-)在變量名稱中不受支持,這就是爲什麼這是錯誤的!

+0

我添加了代碼,但是在第21行我沒有看到什麼奇怪的東西? – xs2bas

+0

@ xs2bas我更新了答案。如果你在代碼中看起來更多一點,你可以很容易地發現它。 –

+0

將所有'picture-list'-stuff重命名爲picture_list都有訣竅。 – xs2bas

0

在寫出關於數百萬開發人員使用的平臺的荒謬事情之前,最好通過提供必要的信息來了解真相。

鈦必須先創建JS文件,然後處理它們以查找任何邏輯錯誤。

你在這裏提供的信息,直到你從你的應用程序的項目共享此文件picture-list.js.js的代碼,而不能只是資源的50%&你的答案不能得到解決。如果不可能共享整個代碼,那麼共享前40-50行代碼應該沒問題。

其次,我可以在您的文件XML,JS,TSS中看到重複的js.js,它們不應該在那裏。

最後,你可以去這個文件/Users/bas/Documents/Appcelerator_Studio_Workspace/Whatever-App-master/Resources/android/alloy/controllers/picture-list.js.js &分享行號。 21在這裏,我猜想包含某種由於你的微妙錯誤而無效的任務。

+0

謝謝你解釋,但有些問題: 你是什麼意思:「其次,我可以在你的文件XML,JS,TSS中看到重複的js.js,它不應該在那裏。」 ...和:「不在資源」中?我只能在資源文件夾中找到這些文件。 – xs2bas