Search code examples
node.jsexpressnode-oracledb

callback is not a funcion - JSON file read


I did some research but all the responses that i get didn't resolved my problem. Basically, i have the following code:

  public static load(lang: string, staReplace: boolean, callback?: (message: string, error?: string) => void) {
    if (!TranslateSingleton.languageFile) {
      TranslateSingleton.languageFile = new Map<string, Object>();
    }
    lang = lang.toLowerCase();
    if (!TranslateSingleton.languageFile.has(lang) || staReplace === true) {
      try {
        let strBody: string = fs.readFileSync(AppConfig.APP_SERVER_DIRETORIO + '/languages/language-' + lang + '.json', 'utf8')
        TranslateSingleton.languageFile.set(lang, JSON.parse(strBody));
        callback('OK', null);

      } catch (ex) {
        AppLog.error('IDIOMA NÃO ENCONTRADO ==>', AppConfig.APP_SERVER_DIRETORIO + '/languages/language-' + lang + '.json');
        callback(null, '## IDIOMA [' + lang + '] não disponível! ##');
      }
    }
  }

And when the 'load' function is called, i always get the response:

1) In the TS TranslateSingleton file:

TranslateSingleton.load(lang, false, null);

2) In another controller:

TranslateSingleton.load(resultToken.lang, true, (resultMessage, errorMessage) => {
              if (errorMessage) {
                resolve(super.trataErro(res, errorMessage));
              } else {
                resolve(super.trataRetorno(req, res, resultMessage));
              }
            });

And, then, my response:

[2020-06-10T11:47:06.257] [ERROR] default - [APPLOG] IDIOMA NÃO ENCONTRADO ==> [ './../languages/language-pt-br.json' ]
[2020-06-10T11:47:06.259] [ERROR] default - [APPLOG] Erro ao recuperar a chave: "AUDITORIA.REGISTRO_AUDITORIA",  [ TypeError: callback is not a function
      at Function.TranslateSingleton.load (C:\Users\emmanuel.oliveira\Documents\AgenciaWeb\aw-server\bin\util\translate.js:24:17)
      at TranslateSingleton.__ (C:\Users\emmanuel.oliveira\Documents\AgenciaWeb\aw-server\bin\util\translate.js:44:32)       
      at C:\Users\emmanuel.oliveira\Documents\AgenciaWeb\aw-server\bin\service\auditoria.service.js:423:62
      at C:\Users\emmanuel.oliveira\Documents\AgenciaWeb\aw-server\bin\service\base\base.service.js:374:29
      at custExecuteCb (C:\Users\emmanuel.oliveira\Documents\AgenciaWeb\aw-server\node_modules\oracledb\lib\connection.js:182:7) ]

Can someone give me a light in this?


Solution

  • Solved this issue by taking the following steps:

    1) Changed the calling function

    TranslateSingleton.load(lang, false, (a, b) => { });
    

    2) Changed the path to root directory (only for dev instance)

    PRD -> ./
    DEV -> ./../