2012-09-18 4 views
0

"id.replace가 함수가 아닙니다."오류가 발생합니다.var.replace not a function

다음은 관련 코드가 있다고 생각합니다. 나는 명백한 무언가를 놓치고 있지만, 내 두뇌는 현재 울창하다.

getSyncDbFile: function (config, id) { 
    if (id === null) 
    { 
     com.synckolab.tools.logMessage("Error: entry has no id (" +config.name + ": " + config.type + ")", com.synckolab.global.LOG_ERROR); 
     return null; 
    } 

    com.synckolab.tools.logMessage("syncDbFile: (" +com.synckolab.tools.text.fixNameToMiniCharset(config.serverKey) + "/" + config.type + "_" + config.name + "/" + id + ")", com.synckolab.global.LOG_ERROR); 

    id = id.replace(/[ :.;$\\\/]\#\@/g, "_"); 
    var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile); 
    try { 
     file.append("synckolab"); 
     if (!file.exists()) { 
      file.create(1, parseInt("0775", 8)); 
     } 

     file.append(com.synckolab.tools.text.fixNameToMiniCharset(config.serverKey)); 
     if (!file.exists()) { 
      file.create(1, parseInt("0775", 8)); 
     } 


     file.append(config.type + "_" + config.name); 
     if (!file.exists()) { 
      file.create(1, parseInt("0775", 8)); 
     } 

     file.append(id); 
    } 
    catch (ex) 
    { 
     com.synckolab.tools.logMessage("Problem with getting syncDbFile: (" +com.synckolab.tools.text.fixNameToMiniCharset(config.serverKey) + "/" + config.name + ": " + config.type + ": " + id + ")\n" + ex, com.synckolab.global.LOG_ERROR); 
     return null; 
    } 
    return file; 
} 
+1

ID 유형은 무엇입니까? 그것은 문자열이어야합니다. – Anoop

답변

2

다른 사람들이 지적했듯이, id 문자열이어야합니다. 우리는 그것이 어떤 유형인지에 대한 힌트가 없습니다.

그냥 줄 앞에

id = id.replace(/[ :.;$\\\/]\#\@/g, "_"); 

이 두 줄을 추가합니다 : 올바른 값이 전달되는 경우 우리는 사람들이 무엇인지 알고 드릴 것입니다

console.log(id); 
console.log(typeof id); 

.

+0

나는 다른 오류를 해결하고 문제의 근원을 찾기 위해 거꾸로 노력하고있다. 이것은 낯선 영토에서 16 단계 전후의 어딘가에있다. 연락처 및 캘린더를 imap 서버와 동기화하는 썬더 버드 플러그인입니다. 이 특정 문제는 tools.js에 있으며 소스는 [here] (http://www.mozdev.org/source/browse/synckolab/src/chrome/content/synckolab/)에서 찾을 수 있으며 devs 사이트는 [여기 ] (http://www.gargan.org/en/Mozilla_Extensions/SyncKolab/CVS_Nightly/). 'console.log (id); console.log (typeof id);'썬더 버드 오류 콘솔에 아무 것도 표시하지 않습니다. – user1514992

+0

OK - 썬더 버드에서'Application.console.log'를 실행하면 "True"와 "Boolean"이 나타납니다 – user1514992

+0

'id'가 부울이면이 코드 샘플 외부에서'getSyncDbFile'을 호출하는 곳으로가는 문제가 있습니다. –

0

변경 :

id.replace(/[ :.;$\\\/]\#\@/g, "_"); 

에가 :

(id+"").replace(/[ :.;$\\\/]\#\@/g, "_"); 
+0

나는 그것들을하기 전에 실제로 어떤 이드인지 알고 싶습니다. –

1

혹시 사용해 보셨습니까 ??

id = String(id).replace(/[ :.;$\\\/]\#\@/g, "_"); 

나는 이것이 효과가 있다고 생각합니다. 대체 이후는 문자열 기능입니다.

참고 :이 방법을 사용하면 문자열을 반환하는 대신 부울 결과를 제공합니다.

관련 문제