钛加速器; CommonJS没有办法
我对Appcelerator很新,我试图导入我自己的commonJS库。 我遵循了指示
http://docs.appcelerator.com/titanium/latest/#!/guide/CommonJS_Modules_in_Titanium
并使用以下代码创建了一个名为“logger.js”的新文件:
exports.info = function(str) {
Titanium.API.info(new Date()+': '+str);
};
现在我只是简单地尝试这么做:
var logger = require('logger');
logger.info('TEST TEST TEST');
就像在这个例子中一样。 他找到了该文件,但没有识别出我的方法,并且出现以下异常:
[ERROR] : TiExceptionHandler: (main) [602,602] ----- Titanium Javascript Runtime Error -----
[ERROR] : TiExceptionHandler: (main) [0,602] - In alloy/controllers/index.js:100,12
[ERROR] : TiExceptionHandler: (main) [0,602] - Message: Uncaught TypeError: Object function Controller() {
[ERROR] : TiExceptionHandler: function logOutput(str) {
[ERROR] : TiExceptionHandler: Titanium.API.info(str);
[ERROR] : TiExceptionHandler: }
[ERROR] : TiExceptionHandler: require("alloy/controllers/BaseController").apply(this, Array.prototype.slice.call(arguments));
[ERROR] : TiExceptionHandler: this.__controllerPath = "login";
[ERROR] : TiExceptionHandler: if (arguments[0]) {
[ERROR] : TiExceptionHandler: __processArg(arguments[0], "__parentSymbol");
[ERROR] : TiExceptionHandler: __processArg(arguments[0], "$model");
[ERROR] : TiExceptionHandler: __processArg(arguments[0], "__itemTemplate");
[ERROR] : TiExceptionHandler: }
[ERROR] : TiExceptionHandler: var $ = this;
[ERROR] : TiExceptionHandler: var exports = {};
[ERROR] : TiExceptionHandler: exports.destroy = function() {};
[ERROR] : TiExceptionHandler: _.extend($, $.__views);
[ERROR] : TiExceptionHandler: exports = logOutput;
[ERROR] : TiExceptionHandler: _.extend($, exports);
[ERROR] : TiExceptionHandler: } has no method 'info'
[ERROR] : TiExceptionHandler: (main) [1,603] - Source: logger.info("TEST TEST TEST");
[ERROR] : V8Exception: Exception occurred at alloy/controllers/index.js:100: Uncaught TypeError: Object function Controller() {
[ERROR] : V8Exception: function logOutput(str) {
[ERROR] : V8Exception: Titanium.API.info(str);
[ERROR] : V8Exception: }
[ERROR] : V8Exception: require("alloy/controllers/BaseController").apply(this, Array.prototype.slice.call(arguments));
[ERROR] : V8Exception: this.__controllerPath = "login";
[ERROR] : V8Exception: if (arguments[0]) {
[ERROR] : V8Exception: __processArg(arguments[0], "__parentSymbol");
[ERROR] : V8Exception: __processArg(arguments[0], "$model");
[ERROR] : V8Exception: __processArg(arguments[0], "__itemTemplate");
[ERROR] : V8Exception: }
[ERROR] : V8Exception: var $ = this;
[ERROR] : V8Exception: var exports = {};
[ERROR] : V8Exception: exports.destroy = function() {};
[ERROR] : V8Exception: _.extend($, $.__views);
[ERROR] : V8Exception: exports = logOutput;
[ERROR] : V8Exception: _.extend($, exports);
[ERROR] : V8Exception: } has no method 'info'
我想这很简单,但我不知道我的错在哪里。
提前致谢
你显示的代码适用于我。 您是否在app / lib目录中创建了logger.js?
也许你应该尝试在index.js中注释掉logger.info(...)这一行,以确保你正在寻找正确的问题;-)
您正在使用哪个版本的Titanium Studio? - 以及在哪个操作系统上?
/约翰
最好导出主对象和访问信息功能(Titanium Good Practices)。
logger.js
var logger = (function(){
var self = {};
self.info = function info(str)
{
Ti.API.info(new Date()+': '+str);
};
return self;
}());
module.exports = logger;
file.js你需要记录器
var loggerObject = require('logger.js'); // (both files are at the same Path)
loggerObject.info("TEST TEST");
我希望我的回答能帮助你;)
通常我们习惯把这种类型的额外的函数文件放在lib目录下,所以你应该创建一个文件夹并在应用程序目录下将它命名为lib,并将logger.js文件放在该文件夹下,然后重试。
链接地址: http://www.djcxy.com/p/96611.html上一篇: Titanium Appcelerator; CommonJS has no method
下一篇: access child view inside the main view in CommonJs module