【问题标题】:Nodejs - Error using properties-reader packageNodejs - 使用属性阅读器包时出错
【发布时间】:2016-08-22 05:46:41
【问题描述】:

我正在尝试使用nodejsproperties-reader 包编写通用属性阅读器实用程序。以下是实现:

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

有人可以帮我更正我的代码吗?

【问题讨论】:

  • 那是因为您正在传递一个字符串并尝试访问该字符串上不存在的方法
  • 文件存在系统中

标签: javascript node.js properties-file


【解决方案1】:

您将'user1.username' 这是一个纯字符串传递给getProperty(err, propertyFile, propertyName),现在propertyFile 是一个纯字符串

'user1.username'.get(propertyName);

除非您已将方法 get() 添加到字符串原型,否则该方法不存在。

【讨论】:

  • 我已经更新了代码。它无法读取属性文件。因此不能使用get方法
  • 你正在调用你的代码,比如 console.log(getProperty(property,'user1.username')) 现在函数 getProperty(err, propertyFile, propertyName) 将被调用,现在 propertyName 有 'user1 .username' 是一个纯字符串。 String 类型没有名为 get() 的方法
  • 有没有我可以处理的。我需要传递许多属性文件并读取许多属性,因此我需要一个实用程序,这样我就不必重复代码了。
【解决方案2】:

我做了一些改变,如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多