2016-08-22 4 views
0

Я пытаюсь написать универсальную утилиту для чтения свойств, используя properties-reader пакет nodejs. Ниже приводится реализация:Nodejs - Ошибка использования пакета свойств-читателя

var propertiesReader = require('properties-reader') 
var path = require('path') 

var property = getPropertyFile('./fileName.properties'); 
console.log(getProperty(property,'user1.username')) 

function getPropertyFile(err, filePath){ 
    if(err){ 
     console.log("Error occured while reading properties file: "err); 
    } 
    else{ 
     return propertiesReader(filePath); 
    } 
} 

function getProperty(err, propertyFile, propertyName){ 
    if(err){ 
     console.log("Error occured while getting properties: ",err); 
    } 
    else{ 
     return propertyFile.get(propertyName) 
    } 
} 

на выполнение выше кода я получаю сообщение об ошибке при чтении файла и получить значение свойства, как показано ниже:

E:\NodeJS\>node propertiesUtility.js 
Error occured while reading properties file: ./locatorValues.properties 
E:\NodeJS\propertiesUtility.js:24 
       return propertyFile.get(propertyName) 
            ^

TypeError: propertyFile.get is not a function 
    at getProperty (E:\NodeJS\propertiesUtility.js:24:23) 
    at Object.<anonymous> (E:\NodeJS\propertiesUtility.js:5:13) 
    at Module._compile (module.js:435:26) 
    at Object.Module._extensions..js (module.js:442:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:313:12) 
    at Function.Module.runMain (module.js:467:10) 
    at startup (node.js:136:18) 
    at node.js:963:3 

Может кто-то пожалуйста, помогите мне в исправлении моего кода.

+0

то потому что вы передаете строку и пытается получить доступ к методу на эту строку, которая не существует – David

+0

Файл существует в системе – Abhinav

ответ

0

Я сделал некоторые изменения, как показано ниже, и она работала:

function getValueFromPropertyFile (filePath, propertyName){ 
     try{ 
      property = propertiesreader(filePath) 
      return property.get(propertyName) 
     } 
     catch(e){ 
      if (e.code !== 'ENOENT') { 
       throw e 
      } else { 
      } 
     }  
    } 
1

вы передаете 'user1.username', который является простой Строка getProperty(err, propertyFile, propertyName), теперь propertyFile является простой строкой

'user1.username'.get(propertyName); 

, если вы не добавили метод Get() для строки прототипа, этот метод не существует.

+0

у меня есть обновил код. Он не может читать файл свойств. следовательно, не может использовать метод get – Abhinav

+0

, который вы вызываете свой код вверх, например console.log (getProperty (свойство, 'user1.username')). Теперь будет вызвана функция getProperty (err, propertyFile, propertyName), теперь свойствоName имеет «user1.username ', который является простой строкой. Тип String не имеет метода, называемого get() – David

+0

Есть ли в любом случае я могу справиться с этим. Мне нужно передать много файлов свойств и прочитать много свойств, поэтому мне нужна утилита, поэтому мне не нужно повторять код. – Abhinav