{ "id": "144898", "key": "ALOY-1249", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "11113", "key": "ALOY", "name": "Alloy", "projectCategory": { "id": "10400", "description": "Tools for developing applications", "name": "Tooling" } }, "fixVersions": [], "resolution": { "id": "2", "description": "The problem described is an issue which will never be fixed.", "name": "Won't Fix" }, "resolutiondate": "2015-11-10T20:27:38.000+0000", "created": "2015-02-18T15:59:35.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [ { "id": "16595", "name": "Alloy 1.5.1", "archived": false, "released": true, "releaseDate": "2014-10-01" } ], "issuelinks": [ { "id": "46148", "type": { "id": "10122", "name": "Gantt: start-finish", "inward": "is triggered by", "outward": "is triggering" }, "inwardIssue": { "id": "141547", "key": "TIMOB-18196", "fields": { "summary": "iOS: add architecture to module not found message", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "49638", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "152672", "key": "TIMOB-19881", "fields": { "summary": "iOS: Check for 64-bit modules at compile instead of runtime", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "None", "id": "6" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "updated": "2015-11-10T20:27:38.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "12329", "name": "Runtime", "description": "Generic bucket for uncategorized runtime issues" } ], "description": "When Alloy can't find a controller on iOS, it gives a message saying that a module (controllerName) for architecture (arm7/arm64) can't be found. very confusing, becuase it sounds like there's a native module problem.\r\n\r\n{code:title=index.js}\r\nAlloy.createController('foo');\r\n{code}", "attachment": [ { "id": "54175", "filename": "Screenshot 2015-02-18 09.54.58.png", "author": { "name": "iotashan", "key": "iotashan", "displayName": "Shannon Hicks", "active": true, "timeZone": "America/Chicago" }, "created": "2015-02-18T15:59:35.000+0000", "size": 19256, "mimeType": "image/png" } ], "flagged": false, "summary": "iOS: Misleading error message when controller file not found", "creator": { "name": "iotashan", "key": "iotashan", "displayName": "Shannon Hicks", "active": true, "timeZone": "America/Chicago" }, "subtasks": [], "reporter": { "name": "iotashan", "key": "iotashan", "displayName": "Shannon Hicks", "active": true, "timeZone": "America/Chicago" }, "environment": "iOS\r\nTi 3.5.0.GA\r\nAlloy 1.7.0-dev", "closedSprints": [ { "id": 520, "state": "closed", "name": "2015 Sprint 22 Tooling", "startDate": "2015-10-26T16:54:38.390Z", "endDate": "2015-11-07T02:54:00.000Z", "completeDate": "2015-11-10T23:31:39.740Z", "originBoardId": 121 } ], "comment": { "comments": [ { "id": "343764", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "I can confirm this behavior. We need to add a file-exists check to Alloy.createController(). As it stands, if the file is not found, it would appear the underlying code wrongly assumes we're requiring in a native module.", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2015-02-18T16:05:44.000+0000", "updated": "2015-02-18T16:05:44.000+0000" }, { "id": "343945", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "This appears to be caused by the linked ticket: TIMOB-18196", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2015-02-19T20:45:48.000+0000", "updated": "2015-02-19T20:45:48.000+0000" }, { "id": "343985", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "PR https://github.com/appcelerator/alloy/pull/667\r\n\r\nFunctional test\r\n\r\n1. Use the included test app. It attempts to load a controller file that doesn't exist (named doesNotExist). \r\n2. Build the app for iOS. You'll get a red-screen error, but with a more meaningful \"Cannot find controller: doesNotExist\"\r\n3. Build the app for Android, it will also fail as expected but with the message \"Requested module not found: alloy/controllers/doesNotExist\"", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2015-02-20T00:22:24.000+0000", "updated": "2015-02-20T00:22:24.000+0000" }, { "id": "344198", "author": { "name": "macgrafic", "key": "macgrafic", "displayName": "Paco Castilla", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Sometimes when compiling to Xcode renames the controller (Detail -> detail) and has given me is you mistake !!", "updateAuthor": { "name": "macgrafic", "key": "macgrafic", "displayName": "Paco Castilla", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-24T15:31:12.000+0000", "updated": "2015-02-24T15:31:12.000+0000" }, { "id": "358383", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "Instead of handling this at run time, I think Alloy should throw an error at compile time to let the developer know that there's no such controller file.", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2015-07-27T21:49:09.000+0000", "updated": "2015-07-27T21:49:09.000+0000" }, { "id": "358391", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "PR: https://github.com/appcelerator/alloy/pull/712\r\n\r\n Functional test\r\n1. Use the included test app. It attempts to load a controller file that doesn't exist (named doesNotExist).\r\n2. Build the app. Compilation should stop and you should see an error output as follow:\r\n{code}\r\n[INFO] controller: \"index.js\"\r\n[ERROR] Cannot find controller: \"doesNotExist\"\r\n{code}", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2015-07-27T23:22:07.000+0000", "updated": "2015-11-04T19:15:11.000+0000" }, { "id": "369080", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "See the comments by [~skypanther] and me on the PR. A compile time check would fail when the controller name is composed dynamically. It needs to be a run-time check.\r\n\r\nBut maybe we should take this issue to TIMOB since it's not just an Alloy issue. The architecture is also confusing if you do a {{require()}} for some CommonJS module you expect to be there but isn't. But of course the hard thing there is that Titanium can't know if the user meant to require a native or CommonJS module.\r\n\r\nGoing back to why we added the architecture I think the reason was because of the 64-bit thing. A native module might be there but not 64-bit. Now THIS is something we could check on (Titanium) compile time and if we do so we don't need to mention the architecture in the error anymore. Another way could be that if Titanium finds a non-64-bit module but it needs 64-bit then it would only then add that the module is not available in the required architecture.\r\n\r\nIn the end handling that better in require() would be better then just resolving this ticket, which would then become invalid anyway.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-05T09:47:57.000+0000", "updated": "2015-11-05T09:47:57.000+0000" }, { "id": "369091", "author": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "body": "This is / was caused by a TIMOB change (yes, for the 64-bit change). See my comment above. I proposed a different solution at the time, but was outvoted by the approach that was taken in the SDK. You're right, the fix should be in the SDK. There are bigger issues in SDK-land. So, Alloy just needs to compensate and move on.", "updateAuthor": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "created": "2015-11-05T14:05:34.000+0000", "updated": "2015-11-05T14:05:34.000+0000" }, { "id": "369097", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Created TIMOB-19881", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-05T15:14:27.000+0000", "updated": "2015-11-05T15:14:27.000+0000" } ], "maxResults": 9, "total": 9, "startAt": 0 } } }