从nodejs中的文件加载javascript对象,解析错误

时间:2013-09-13 10:56:57

标签: javascript node.js

我在尝试使用NodeJS从文件加载以下javascript对象时遇到了麻烦:

{
    queries:{
            user:"SELECT * FROM users WHERE $1 = ?"
    },
    user:function(identifier){
            return this.queries.user.replace('$1', "user_"+identifier);
    }
}

使用require函数:

var queries = require('./components/queries');

我在第4行遇到解析错误,意外','在查询结束大括号之后。

我不确定这个对象有什么问题,因为我可以毫不费力地在chrome控制台中声明它,所以我敢打赌这个问题与我在主脚本中包含这段代码的方式有关。但我不知道如何正确地包括它。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

在commonJS中,您应该使用exports对象来设置对模块变量的访问权。

exports.queries = {
    queries:{
        user:"SELECT * FROM users WHERE $1 = ?"
    },
    user:function(identifier){
        return this.queries.user.replace('$1', "user_"+identifier);
    }
}

然后像这样添加:

var q_mod = require('./components/queries');
var queries = q_mod.queries;

//logs "SELECT * FROM users WHERE $1 = ?"
console.log(queries.queries.user);

答案 1 :(得分:-1)

你有3种方法可以做你想做的事:

  1. 将文件的扩展名更改为.json

  2. 将内容导出为node.js模块:

    module.exports = /* the object */
    
  3. 读取并解析为json文件:

    fs.readFile('path/to/file', function (content) {
        var queries = JSON.parse(content.toString());
    });