使用cocos模拟器启动时,代码会自动合并成一个文件,出错也只提示project.dev.js 第多少行,看起来很不方便,好在cocos给了错误接口,直接读取文件定位到要找的行,看起来就方便好多。
var LogHelper = {
_files: {},
err: function(filename, lineNumber, message) {
var dataArr = this.getJsFileDataArr(filename);
if (dataArr) {
var jsFileName = "";
var jsFileLineNum = 0;
for (var index = lineNumber; index > 0; index--) {
var data = dataArr[index];
if (data.indexOf("// scripts/") >= 0 && data.indexOf(".js") >= 0) {
jsFileName = data;
jsFileLineNum = lineNumber - index - 3;
break;
}
}
clog("################################################################");
clog(message);
clog("error in this file : " + jsFileName + ":" + jsFileLineNum);
for (var index = lineNumber - 1; index < dataArr.length && index < lineNumber + 5; index++) {
clog(dataArr[index]);
}
clog("################################################################");
}
},
getJsFileDataArr: function(filename) {
var data = this._files[filename];
if (!data) {
var readDataStr = jsb.fileUtils.getStringFromFile(filename);
data = readDataStr.split("\n");
}
return data;
}
};
window.__errorHandler = LogHelper.err.bind(LogHelper);
exports = module.exports = LogHelper;