Appcelerator [错误]:无法解析... controllers / picture-list.js.js

时间:2017-10-04 15:07:36

标签: appcelerator appcelerator-titanium appcelerator-alloy

尝试在Android手机上运行项目时,Appcelerator会出错:

  

[INFO]:在6.57967s中编译的合金

     

[INFO]:Alloy编译成功完成

     

[INFO]:JavaScript文件需要加密

     

[INFO]:处理JavaScript文件

     

[错误]:无法解析/Users/bas/Documents/Appcelerator_Studio_Workspace/Whatever-App-master/Resources/android/alloy/controllers/picture-list.js.js

     

[错误]:赋值表达式(21:4)中的左侧无效

愚蠢的是Appcelerator自己创建了文件:

  

[INFO]:[picture-list.js.xml]查看处理...

     

[INFO]:style:“picture-list.js.tss”

     

[INFO]:view:“picture-list.js.xml”

     

[INFO]:创建:“Resources / android / alloy / controllers / picture-list.js.js”

     

[INFO]:创建:“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;

2 个答案:

答案 0 :(得分:0)

因为编译器会删除JavaScript文件,所以它也会验证它。

所以你看到的是picture-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中的破折号(-),这就是为什么会出错!

答案 1 :(得分:0)

在编写有关数百万开发人员使用的平台的荒谬事情之前,最好通过提供必要的信息来了解真相。

Titanium必须首先创建JS文件,然后处理任何逻辑错误。

您在这里提供的信息仅为50%&在您从应用项目中共享此文件 picture-list.js.js 的代码之前,而不是在参考资料中,您的答案无法解决。如果不能共享整个代码,那么分享前40-50行代码应该没问题。

其次,我可以在您的文件XML,JS,TSS中看到重复的js.js,它们不应该存在。

最后,您可以转到此文件 /Users/bas/Documents/Appcelerator_Studio_Workspace/Whatever-App-master/Resources/android/alloy/controllers/picture-list.js.js &分享线号。这里我想包含某种由于你的一些微妙错误而无效的作业。