1

我在尝试使用 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 控制台中毫无问题地声明它,所以我敢打赌这个问题与我在主脚本中包含这段代码的方式有关。但我不知道如何正确包含它。

谢谢你的帮助 !

4

2 回答 2

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);
于 2013-09-13T11:06:47.007 回答
-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());
    });
    
于 2013-09-13T11:04:46.500 回答